sql - 获取单个查询中记录的计数百分比

标签 sql sql-server sql-server-2008

引用这个问题:

Get count of items and their values in one column

如何在单个查询中获取记录计数的百分比,如下所示:

ItemId        count          Percent
------------------------------------
   1            2              33.3
   2            0                0
   3            1              16.6
   4            3              50.0            

谢谢

最佳答案

COUNT(*) OVER() 给出总计数。

编辑但实际上您需要 SUM(COUNT(MyTbl.ItemID)) OVER() 来对该列中的值求和。

SELECT Items.ItemID,
       [count] = COUNT(MyTbl.ItemID),
       [Percent] = 100.0 * COUNT(MyTbl.ItemID) / SUM(COUNT(MyTbl.ItemID)) OVER()
FROM   (VALUES (1,'N1'),
               (2,'N2'),
               (3,'N4'),
               (4,'N5')) Items(ItemID, ItemName)
       LEFT JOIN (VALUES(1),
                        (1),
                        (3),
                        (4),
                        (4),
                        (4)) MyTbl(ItemID)
         ON ( MyTbl.ItemID = Items.ItemID )
GROUP  BY Items.ItemID
ORDER  BY Items.ItemID  

关于sql - 获取单个查询中记录的计数百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7340266/

相关文章:

sql - 如何编写从另一个表中搜索一组单词的 SQL 查询?

SQL 查询引用

sql - 给定日期的有效价格

sql - 具有最大限制的运行总计

SQL Server + 为表中的每个 masterID 仅选择两条记录

sql-server - 查找 SSIS 包上次修改/部署日期 - SQL Server

sql - 在SQL的多个列中计算不同的值对

sql - 带有备用连续出版物的列

c# - 在 C# 中为对象指定动态属性

sql - 如何在没有任何备份的情况下将sql server数据库从一台服务器复制到另一台服务器