MYSQL 주단위 쿼리 질문드립니다. 0 2 2,962

by CVS [MySQL] 주단위 쿼리 MYSQL MARIADB 통계 [2020.02.19 16:44:29]


안녕하세요

주단위로 금~목 을 1주로 기준을 잡고 통계를 내고 그 금액을 합산하는 쿼리를 작성하고있습니다

금요일~목요일 통계를 내고 그 합산금액은 그 다음날 금요일에 찍히게끔 하고싶습니다. 그러나

MYSQL의  DAYOFWEEK을 사용하니 일~토 로 기준이잡히고 WEEKDA를 사용하니 월~일 로 기준이 잡히고

원하는 금~목 을 기준으로 잡히질않아서 질문드리게 되었습니다.

 

현재 테이블 구조는 이렇습니다.

tr_date timestamp,

pay DECIMAL(24,8)

tr_st VARCHAR(30)

 

제가 만들어본 쿼리는 이렇습니다.




select

date_format(date_sub(`tr_date`, interval(weekday(`tr_date`)-4) day),'%Y%m%d') as "tr_dt",

sum(pay),

tr_st

from

tb_statistics

group by tr_dt

order by tr_dt desc;

날짜는 원하는대로 찍히나 금액부분에서 월~일을 기준으로 잡아서 합산해버립니다)어떻게 해야 월~일 이 아닌 금~목으로 금액을 합산할수있을까요?

by 마농 [2020.02.20 08:40:11]
WITH t AS
(
SELECT '2020.02.01'tr_date, 1 pay
UNION ALL SELECT '2020.02.02', 1
UNION ALL SELECT '2020.02.03', 1
UNION ALL SELECT '2020.02.04', 1
UNION ALL SELECT '2020.02.05', 1
UNION ALL SELECT '2020.02.06', 1
UNION ALL SELECT '2020.02.07', 1
UNION ALL SELECT '2020.02.08', 1
UNION ALL SELECT '2020.02.09', 1
UNION ALL SELECT '2020.02.10', 1
UNION ALL SELECT '2020.02.11', 1
UNION ALL SELECT '2020.02.12', 1
UNION ALL SELECT '2020.02.13', 1
UNION ALL SELECT '2020.02.14', 1
)
SELECT tr_date - INTERVAL WEEKDAY(tr_date + INTERVAL 3 DAY) DAY tr_dt
     , SUM(pay) pay
  FROM t
 GROUP BY tr_dt
;

 


by CVS [2020.02.20 11:34:57]

마농님 감사드립니다.

SELECT tr_date - INTERVAL WEEKDAY(tr_date + INTERVAL 3 DAY) DAY tr_dt

덕분에 해결 할 수 있었습니다.

2019년부터 현재까지 통계를 내야하고 앞으로도 계속 값을 가져와야해서 이렇게 해결했습니다.

select

tr_date - interval weekday(tr_date + interval 3day) -7 day as tr_dt,

sum(pay_amt) as pay,

tr_st

from

tb_statistics

group by tr_dt

order by tr_dt desc;

답변 다시 한 번 감사드립니다.

좋은 하루 보내세요

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입