안녕하세요
주단위로 금~목 을 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;
날짜는 원하는대로 찍히나 금액부분에서 월~일을 기준으로 잡아서 합산해버립니다)어떻게 해야 월~일 이 아닌 금~목으로 금액을 합산할수있을까요?
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 ;
마농님 감사드립니다.
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;
답변 다시 한 번 감사드립니다.
좋은 하루 보내세요