[英]COUNT and GROUP BY several columns
我得到了这样的表格,我想在其中计算“WeekCount”,以便计算“完成”的数量,但按周期和一周分组。 |
ID | 天 | 循环 | 星期 | 完毕 |
---|---|---|---|---|
1个 | 1个 | 1个 | 1个 | 1个 |
1个 | 1个 | 2个 | 1个 | 0 |
1个 | 2个 | 2个 | 1个 | 1个 |
1个 | 3个 | 2个 | 1个 | 0 |
1个 | 4个 | 2个 | 1个 | 0 |
1个 | 5个 | 2个 | 1个 | 0 |
1个 | 6个 | 2个 | 1个 | 0 |
1个 | 7 | 2个 | 1个 | 0 |
1个 | 8个 | 2个 | 2个 | 0 |
1个 | 9 | 2个 | 2个 | 0 |
我试过这样的事情:
SELECT a.ID, COUNT (a.Done) as Count_Done,a.Cycle,a.Week
FROM #Table a
JOIN #Table b ON a.ID=b.ID AND a.Cycle=b.Cycle AND a.Week=b.Week
WHERE a.Done=1
GROUP BY a.ID,a.Cycle,a.Week
但我正在计算所有行,而不仅仅是像这样“完成=1”的行:
ID | 计数完成 | 循环 | 星期 |
---|---|---|---|
1个 | 1个 | 1个 | 1个 |
1个 | 7 | 2个 | 1个 |
虽然我期待这样的结果:
ID | 计数完成 | 循环 | 星期 |
---|---|---|---|
1个 | 1个 | 1个 | 1个 |
1个 | 1个 | 2个 | 1个 |
谢谢你的帮助!
根本不清楚为什么需要第二次加入表。
我怀疑以下内容会给你你想要的。 由于它没有第二次加入表,因此它只会看到Done=1
的行,因此计数是正确的:
SELECT a.ID, COUNT (a.Done) as Count_Done,a.Cycle,a.Week
FROM #Table a
WHERE a.Done=1
GROUP BY a.ID,a.Cycle,a.Week
如果你想包含计数为 0 的 id/cycle/week 组合,我建议使用SUM
而不是COUNT
(如果你的完成值确实是 0/1):
SELECT a.ID, SUM(a.Done) as Count_Done,a.Cycle,a.Week
FROM #Table a
GROUP BY a.ID,a.Cycle,a.Week
或者可能
SELECT a.ID, COUNT(CASE WHEN a.Done=1 THEN 1 END) as Count_Done,a.Cycle,a.Week
FROM #Table a
GROUP BY a.ID,a.Cycle,a.Week
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.