我想创建一个基于单个SQL语句的百分比频率表。所以,如果我有一张这样的男女表:
Name Gender
Allen M
Jerry M
Marsha F
Alice F
我想以此表结束:
Gender Freq
M .50
F .50
我知道我可以统计和分组,但我怎样才能将分数除以分组总数?
答案 0 :(得分:1)
大多数SQL方言都支持ANSI标准窗口函数。使用它们你可以做到:
select gender, count(*), count(*) / sum(count(*) * 1.0) over ()
from t
group by gender;
* 1.0
只是因为某些数据库进行了整数的整数除法。
答案 1 :(得分:0)
尝试使用以下查询
SELECT gender,cast(count(1) OVER(Partition by GENDER order by GENDER)/(count(1) OVER( order by (select 1))*1.0) as numeric(4,2)) freq
FROM #temp
GROUP BY gender
ORDER BY Gender desc