하루종일 삽질
MYSQL 그룹별 연속된 날짜 갯수 세기 본문
SET @k=0;
SELECT member_no, biz_date, COUNT(group_date)
FROM (
SELECT member_no, biz_date, @k:=@k+1 AS row_num, ADDDATE(biz_date, -@k) AS group_date
FROM (
SELECT a.member_no, a.biz_date, SUM(b.pay_amount)
FROM bizshowings AS a
RIGHT JOIN bizshowings_pay AS b ON a.no = b.biz_no
WHERE a.biz_date > '2019-12-12'
GROUP BY a.member_no, DATE(a.biz_date)
ORDER BY a.member_no
) AS aa
GROUP BY member_no, DATE(biz_date)
) AS bb
GROUP BY member_no, group_date
핵심.
1. 변수를 사용해서 row를 카운트 한다.
2. 해당 날짜에 변수를 더하여 그룹 컬럼을 만들어준다.
3. 그룹 컬럼과 키 값을 그룹핑해주어 카운트 한다.
Comments