我有一个包含一列项目的 SQL 表,我想按降序显示每个项目占总计数的百分比。
例如
Column A
Item 1
Item 1
Item 2
Item 3
我想显示:
Column A
Item 1 0.5
Item 2 0.25
Item 3 0.25
到目前为止,我已经尝试过以下方法:
SELECT [Column A], (count([Column A]) / count(*))
FROM [table]
GROUP BY [Column A]
Order by (count([Column A]) / count(*)) DESC
但是,一切都返回为 1。
最佳答案
您可以尝试在主查询中按[Column A]
列进行COUNT
分组。然后在子查询中进行总count
除法。
CREATE TABLE T(
[Column A] VARCHAR(50)
);
INSERT INTO T VALUES ('Item 1');
INSERT INTO T VALUES ('Item 1');
INSERT INTO T VALUES ('Item 2');
INSERT INTO T VALUES ('Item 3');
SELECT [Column A],COUNT(*) /CAST ((SELECT COUNT(*) FROM T) AS FLOAT)
FROM T
GROUP BY [Column A]
或者您可以使用CROSS JOIN
获取总计然后进行除法。
SELECT [Column A],COUNT(*) /CAST(total AS FLOAT)
FROM T CROSS JOIN (SELECT COUNT(*) total FROM T) v
GROUP BY [Column A],total
关于sql - 按 SQL Server 中总数的百分比分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52240104/