繁体   English   中英

COUNT 和 GROUP BY 几列

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM