SQL每日一题(20220428)
SELECT d.id, d.date, d.num
FROM (SELECT c.dt, c.id, sum(c.num) num, min(c.date) date
FROM (SELECT a.id, a.da, b.date, FLOOR((b.date - a.da) / 7) dt, b.num
FROM (SELECT id, min(date) da, sum(num) num FROM t1124 GROUP BY id) a
RIGHT JOIN (SELECT * FROM t1124) b ON a.id = b.id) c
GROUP BY c.dt, c.id
ORDER BY c.id) d
select id, aa, sum(num) num
from (select a.id,
a.date,
a.num,
ifnull(if(ifnull(datediff(a.date, b.date), right(a.date, 1)) >= 7, b.num,
ifnull(datediff(a.date, b.date), right(a.date, 1))), a.num) aa
from (select *, row_number() over (partition by id) rnk from t1124) a left
join(select *, row_number() over () rnk from t1124) b on a.rnk=b.rnk+1) p
group by aa, id