看着,但只找到了没有好答案的投票问题。
我试图在SQL Server中查找出现的百分比。我正在做的简化版本:
ID NAME FAVORITE_COLOR
------------------------------------
1 Jim Blue
2 Tom Green
3 Rob Yellow
4 Kev Blue
5 Kim Green
6 Bev Blue
我可以算出每个中有多少,这很容易。
SELECT
favorite_color, COUNT(favorite_color) AS totals
FROM
color_prefs
GROUP BY
favorite_color
那告诉我3个人喜欢蓝色(等)。我无法弄清楚如何做到就是获得百分比。我想知道50%的人喜欢蓝色。我尝试了下面的内容,但SQL完全讨厌它:
SELECT
favorite_color,
COUNT(favorite_color) / SUM(COUNT(favorite_color)) AS color_percent
FROM
color_prefs
GROUP BY
favorite_color
我收到错误:
无法对包含聚合或子查询的表达式执行聚合函数。
显然,我可以让PHP为我解决这个问题,但是我必须在没有子查询的SQL中做到这一点,对吗?
答案 0 :(得分:2)
使用窗口功能:
Select color, count(*),
Count(*) * 1.0 / sum(count(*)) over ()
From color_prefs
Group by color;
答案 1 :(得分:2)
你可以用两种方式做到这一点。第一种方式效率不高,但如果你的表不包含很多行,那么应该没问题。
select favorite_color,count(favorite_color)*100/(select count(*) from a)
from color_prefs
group by favorite_color
这是第二种方式,效率更高..
select favorite_color,count(favorite_color)*100/sum(count(*)) over()
from color_prefs
group by favorite_color