Вычислить долю каждого от всех

Есть таблица 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

→ Ссылка