sql-server - 通过返回重复项聚合不带组
问题描述
我有以下数据。
Property, Value
Odd,1
Even,2
Odd,3
Even,4
Odd,5
Even,6
使用 GROUP BY
SELECT Property, COUNT(*) FROM Tab1 GROUP BY Property
结果:
Property, COUNT(*)
Odd 3
Even 3
但是当我使用聚合函数时,它会返回重复值。
SELECT property,count(*) over (partition by property) AS count
FROM Tab1;
结果
Property, count
Even 3
Even 3
Even 3
Odd 3
Odd 3
Odd 3
我希望得到与使用 GROUP BY 相同的结果。
SELECT property, count FROM (
SELECT property,count(*) over (partition by property) AS count
FROM Tab1) AS tab2;
除了这个还有其他方法吗?
解决方案
这就是窗口函数的工作原理;您会为源表中的每一行返回一行,而不是像使用GROUP BY
. 您可以使用以下方法获得相同的结果SELECT DISTINCT
:
SELECT DISTINCT property,
COUNT(*) OVER (PARTITION BY property) AS count
FROM Tab1
推荐阅读
- reactjs - 在material-ui中为mobileMenu添加徽章
- flutter - 颤振在2个标记之间绘制路线
- flutter - 来自对话框时,Navigator.pushReplacement() 不起作用
- selenium - 如何以 .xml 格式保存我的 Selenium IDE 结果
- python - 在python中将xls文件发送到S3
- java - 在java中将数组重新排列为嵌套数组
- json - 如何将嵌套地图属性提取到根类中?
- elasticsearch - 弹性搜索 - 从多条记录中获取整体状态,然后按状态计数
- python - 在 Python 中向现有字典添加新的“列”
- javascript - 如何增加 Javascript UDF 的内存限制?