假设我有一个包含以下列的表。
yr mo group players
年是四位数的年份20xx,月份是两位数的月份,组是唯一的群组标识符 - 数字和玩家是给定年份的玩家数量。
我正在尝试 - 并且失败 - 编写一个查询,每个月输出以下内容:
AND(这是我真正被困的部分) 看看当前时期的群组 - 将他们与具有相同身份识别的群体配对,并计算出玩家的净差异。
作为一个基本的例子,如果1,2,3组在1,2014分别有3,4,5和1,2组,其中2,3和1的球员,那么球员的差异将是 - 2,组间的差异为1。
答案 0 :(得分:0)
尝试这样的事情:
SELECT
COUNT(DISTINCT p2.grp) as grp_current_period,
COUNT(DISTINCT p1.grp) AS grp_last_year,
COUNT(DISTINCT p2.grp) - COUNT(DISTINCT p1.grp) AS grp_diff,
SUM(CASE WHEN p1.grp IS NULL THEN 0
ELSE SUM(p2.players - p1.players)
END) as players_diff
FROM
myTable p2 LEFT JOIN
myTable p1 ON p2.mo = p1.mo AND
p2.yr = p1.yr - 1 AND
p2.grp = p1.grp
GROUP BY p2.yr, p2.mo
在这里,我加入当前月/年到前一年,如果球队不存在,则球员差异设置为零。