2016-09-11 3 views
0

Я хотел бы сделать частотную таблицу, основанную на процентах, на основе одного оператора SQL. Так что, если у меня есть таблица мужчин и женщин, как это:Сгенерирована основанная на процентах (не учитываемая) таблица частот в SQL

Name Gender 
Allen M 
Jerry M 
Marsha F 
Alice F 

Я хотел бы закончить с этой таблицей:

Gender Freq 
M  .50 
F  .50 

Я знаю, что могу рассчитывать и группа, но как я могу разделить подсчет по группам по общему счету таблицы?

ответ

1

Большинство диалектов SQL поддерживают стандартные функции окна ANSI. С их помощью вы можете сделать:

select gender, count(*), count(*)/sum(count(*) * 1.0) over() 
from t 
group by gender; 

* 1.0 просто потому, что некоторые базы данных делают целочисленное деление целого числа.

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 
Смежные вопросы