MySQL

[MySQL] 연속일수 구하기

야챔 2021. 3. 29. 16:25

SELECT goalId, date_format(createAt, '%Y.%m.%d') as createAt, count(row_num) as countDay
FROM (
SELECT goalId, createAt, goalBookId, @var:=@var+1 AS row_num, date_format(ADDDATE(createAt, -@var), '%Y-%m-%d') AS group_date
FROM (
SELECT @var:=0, a.goalId, a.createAt, goalBookId
FROM Challenge AS a
RIGHT JOIN Goal AS b ON a.goalId = b.goalId
WHERE a.goalId = ${goalId}
GROUP BY a.goalId, DATE(a.createAt)
ORDER BY createAt ASC ) AS aa
GROUP BY goalId, DATE(createAt)
) AS bb
GROUP BY goalId, group_date
ORDER BY createAt DESC limit 1