我试图找到一个解决方案,但即使看起来很简单也没有成功。所以这可能是一个新手问题......
我有一个包含 3 列的用户分数表:
date userid points
2012-05-01 1 23
2012-06-01 1 34
2012-07-01 1 44
2012-05-01 2 78
2012-06-01 2 94
2012-07-01 2 99
2012-06-01 3 2
2012-07-01 3 9
现在我需要为每个用户获取2012-05-01 和 2012-06-01 之间的点差。
不存在的用户点数(例如 userid 3)必须计算为 2 - 0 ...为此我想我可以使用 COALESCE(qa_points,0)。
我读到了组合两个子查询进行计算,但未能实现它。
任何帮助表示赞赏。
PS:这不起作用:
SELECT t1.userid, t1.points - t2.points AS mpoints FROM (
SELECT userid,points FROM `userscores`
WHERE YEAR(date) = YEAR('2012-05-01')
AND MONTH(date) = MONTH('2012-05-01') )
AS t1
JOIN (
SELECT userid,points FROM `userscores`
WHERE YEAR(date) = YEAR('2012-04-01')
AND MONTH(date) = MONTH('2012-04-01') )
AS t2
ORDER BY mpoints DESC, t1.userid DESC;