回答
你的意思是你的查询:
SELECT ID, COUNT(*) AS "Count"
FROM tableX
GROUP BY ID ;
产生这样的:
ID Count
1 5
2 2
3 1
但你希望?:
ID Count
1 5
1 5
1 5
1 5
1 5
2 2
2 2
3 1
然后,这个查询将做到:
SELECT grp.ID, grp."Count"
FROM
tableX AS t
JOIN
(SELECT ID, COUNT(*) AS "Count"
FROM tableX
GROUP BY ID
) AS grp
ON grp.ID = t.ID ;
它可以在几乎所有的DBMS和所有版本的SQL-Server中工作。对于SQL Server 2005和更高版本(以及Oracle和Postgres),OVER
子句的答案看起来更加优雅,可能是首选。在你的版本中测试哪一个更高效。我认为在2012版本中,OVER
子句的查询效率很高。
你说“用OVER子句答案更好。”但根据我的经验,这些窗口功能可能会造成巨大的性能下降。有些时候,当我使用'Count()OVER'时,查询变得非常缓慢,并且当我刚刚将行人连接到聚合子查询时又变得很快,就像这里一样。 – ErikE 2012-08-02 00:01:52
@ErikE:你很可能是对的。我会编辑。 – 2012-08-02 00:03:23
您可以使用count()
与OVER
clause:
select a, count(*) over (partition by a) as [count]
from tableName ;
这就是所谓的窗函数。我建议你研究这些。
糟糕,我没有注意到[tag:SQL-Server]标签。这比我的回答更好,更简单。 – 2012-08-01 21:11:35
谢谢,我开始在这个网站回答。这非常有趣。它也提高了我的英语 – 2012-08-01 21:13:20
@ypercube - 但它没有说'SQL Server 2005 +'。你的回答是正确的,不知道你是否应该删除它 – Lamak 2012-08-01 21:37:39
- 1. 如何统计每个类型在数组中的数量?
- 2. 如何统计数组中每个项目的出现次数?
- 3. 如何统计每行的列数?
- 4. 如何统计每天的记录数?
- 5. 如何获得一个数组来计算有多少个数字,而不是统计每个数字的值?
- 6. 每组Solr统计信息
- 7. 统计字符串数组中每个字最后出现后的字数
- 8. 如何统计每天搜索字词的Twitter推文数
- 9. 如何统计数字范围内的数组项目
- 10. 如何用Python统计每个矩阵行的字符?计数器()?
- 11. 统计数组中的字符数和字数
- 12. 如何统计多索引数据框中每天的行数?
- 13. Cloudant创建视图来统计每个最后的值数组字段
- 14. 如何统计数字中的数字,包括前导零?
- 15. 如何统计组返回的组数量?
- 16. Sql Server 2005 - 每个组件每次运行的SSIS统计
- 17. SQL:如何统计一个字符串中每个元音的个数
- 18. 如何统计每个目录中的文件数量?
- 19. 如何统计当年每月的物品数量?
- 20. SQL如何统计每个客户的总行数?
- 21. 如何统计每个单词的出现次数?
- 22. 如何统计每个用户做过什么的次数?
- 23. 如何统计列中每个不同值的出现次数?
- 24. 如何统计每半小时的邮件数量?
- 25. PHP:统计数字出现在数组中的次数?
- 26. 如何统计使用shell的字符串的字数
- 27. 统计Access中每行的空字段数(不是查询)
- 28. 如何统计JSON文件中数组内的对象数量?
- 29. 如何统计变量在javascript数组中重复的次数?
- 30. Sinatra - 如何计算每个统计请求的响应时间?
请标记您的SQL Server版本。 – 2012-08-01 22:10:00