计数SQL的百分比

计数SQL的百分比,sql,Sql,你怎么能得到一个百分比的计数?当我试图根据行数计算百分比时,得到的值都是相同的。我希望每个属性都有一个百分比,具体取决于计数的多少。因此,如果我将一个属性计数30次,我希望根据行数和其他值将其更改为百分比 SELECT Attribute , COUNT(Attribute) / COUNT(*) * 100 AS TopIssues FROM Audits WHERE MONTH(TransActionDate) = MONTH(GETDATE()) GR

你怎么能得到一个百分比的计数?当我试图根据行数计算百分比时,得到的值都是相同的。我希望每个属性都有一个百分比,具体取决于计数的多少。因此,如果我将一个属性计数30次,我希望根据行数和其他值将其更改为百分比

SELECT  Attribute
      , COUNT(Attribute) / COUNT(*) * 100 AS TopIssues
FROM    Audits 
        WHERE MONTH(TransActionDate) = MONTH(GETDATE())
GROUP BY Attribute
ORDER BY COUNT(Attribute) DESC     

在SQL Server中,您可以使用:

SELECT  Attribute
      , COUNT(Attribute)*1.0 / SUM(COUNT(*)) OVER() * 100 AS TopIssues
FROM    Audits 
WHERE MONTH(TransActionDate) = MONTH(GETDATE())
GROUP BY Attribute
ORDER BY COUNT(Attribute) DESC   

您也可以这样做:

SELECT  Attribute
      , COUNT(Attribute)*1.0 / ACount AS TopIssues
FROM    Audits 
CROSS JOIN (SELECT COUNT(1) ACount FROM Audits) ACount
WHERE MONTH(TransActionDate) = MONTH(GETDATE())
GROUP BY Attribute, ACount
ORDER BY COUNT(Attribute) DESC