Вычислить долю каждого от всех
Есть таблица SQL my_dataset:
Sex Params
M 4
F 29
F 11
M 33
F 8
F 6
В одном запросу нужно вычислить долю записей для каждого Sex. Код
cursor = conn.cursor()
sql_str = '''SELECT sex AS gender,
(COUNT(sex)*100.0 / COUNT(*)) AS gender_counter
FROM hr_dataset
GROUP BY gender
ORDER BY gender;'''
gender_counter = pd.read_sql_query(sql_str, conn)
возвращает
Sex Params
F 100
M 100
Ответы (1 шт):
Автор решения: Akina
→ Ссылка
SELECT 100 * SUM((Sex = 'M')::INT) / COUNT(Sex) percent_m,
100 * SUM((Sex = 'F')::INT) / COUNT(Sex) percent_f
FROM test;
https://dbfiddle.uk/?rdbms=postgres_12&fiddle=1e786f63b15f36d957c146bdcef96edd