使用此SQL查询:
Select CityName, count(UserID) as UserCount
from tblUsers
group by CityName
我得到了这些结果:
CityName UserCount
---------------------
City 1 10
City 2 15
预期产出:
CityName UserCount Perc
---------------------------
City 1 10 40
City 2 15 60
根据上述数据集,我想根据1列中值的总和得到行的%分布。请指教。
答案 0 :(得分:1)
尝试使用子查询来选择总计数,如下所示:
Select CityName,
count(userID) as userCount,
count(UserID)/(select count(*) from tblUsers)*100 as Perc
from tblUsers
group by CityName
您也可以尝试JOIN:
SELECT t.CityName,
t.userCount,
t.userCount/s.totalCount*100 as Perc
FROM (Select CityName, count(UserID) as UserCount
from tblUsers
group by CityName) t
INNER JOIN (SELECT count(*) as totalCount from tblUsers) s
ON(1=1)
答案 1 :(得分:0)
最简单的方法是使用窗口函数:
Select CityName, count(UserID) as UserCount ,
count(UserId) * 100.0 / sum(count(UserId)) over () as Perc
from tblUsers
group by CityName;
不需要子查询。
答案 2 :(得分:0)
不需要子查询/加入,只需使用组合总和:
Select CityName,
count(userID) as userCount,
100 * count(UserID)/sum(count(UserID)) over () as Perc
from tblUsers
group by CityName
sum(count(UserID)) over ()
返回所有计数的总和。
而不是count(UserID)
您可以使用COUNT(*)