不用分组,也不用累计求和函数,直接对每个元组进行遍历,当前元组如果在之前日期有刷题记录,那就对这些记录的刷题量进行求和,然后和用户表进行内连接匹配用户名即可!

SELECT user.name,c.date,c.ps_num
FROM (
SELECT p.user_id,p.date,
(
SELECT SUM(b.number)
FROM passing_number AS b
WHERE b.date<=p.date AND p.user_id=b.user_id
) AS ps_num
FROM passing_number AS p
) AS c INNER JOIN user
ON c.user_id=user.id
ORDER BY c.date,user.name