gpt4 book ai didi

MySQL:获取一个表(多个用户标识)中两个值之间的差异?

转载 作者:行者123 更新时间:2023-11-29 02:32:24 25 4
gpt4 key购买 nike

我试图找到一个解决方案,但即使看起来很简单也没有成功。所以这可能是一个新手问题......

我有一个包含 3 列的 userscores 表:

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)。

我读到关于结合 two subqueries用于计算但未能实现。

感谢任何帮助。

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;

最佳答案

我想你的查询应该是这样的:

    SELECT ul.userid, 
ul.points - COALESCE(uf.points, 0) AS points_difference
FROM userscores ul
LEFT JOIN
(SELECT userid, points FROM userscores WHERE `date` = '2012-05-01') AS uf
ON uf.userid = ul.userid
WHERE ul.date = '2012-06-01'

使用 LEFT JOIN 是因为您告知可能没有此用户/以前日期 组合的记录。

关于MySQL:获取一个表(多个用户标识)中两个值之间的差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11178599/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com