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

Ari*_*ian 7 sql sql-server sql-server-2008

参考这个问题:

在一列中获取项目及其值的计数

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

ItemId        count          Percent
------------------------------------
   1            2              33.3
   2            0                0
   3            1              16.6
   4            3              50.0            
Run Code Online (Sandbox Code Playgroud)

谢谢

Mar*_*ith 13

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  
Run Code Online (Sandbox Code Playgroud)