两种方法:
- 使用窗口函数SUM,将日期作为“窗口”计算累加刷题数量
- 使用自联结
窗口函数
SELECT name AS u_n,date, SUM(number) OVER (PARTITION BY user_id ORDER BY date) AS ps_num FROM passing_number AS p INNER JOIN user ON user.id=p.user_id GROUP BY date,u_n ORDER BY date,name
使用自联结
SELECT name AS u_n,date,ps_num
FROM (
SELECT p1.user_id,p1.date,SUM(p2.number)AS ps_num
FROM passing_number AS p1,passing_number AS p2
WHERE p1.date>=p2.date
AND p1.user_id=p2.user_id
GROUP BY p1.date,p1.user_id
) AS p
INNER JOIN user
ON user.id=p.user_id
GROUP BY date,u_n
ORDER BY date,name遇到这类问题,使用窗口函数最方便,代码也比较简洁



京公网安备 11010502036488号