我正在尝试从我的数据集中检索女性员工比例第二高的国家。
这些是表中相关的维度:
表名是“员工”国家(varchar)男性(布尔)女性(布尔)
这取决于数据库。假设您使用的是 MySQL(最常用的 DB)布尔值相当于 tinyint(1)。这使得整数算术无需强制转换或 if then else 逻辑成为可能:
SELECT country, (sum(male)/ sum(female)) as ratio FROM employee GROUP BY country order by ratio desc limit 2;
然后选择第二个结果(如果您真的对最高值不感兴趣,则使用 Limit 1, 1)。
如果您需要在使用 PostGres 时进行投射,您可以在这里查看: postgresql - sql - count of 'true' values
SELECT Country
FROM employee
GROUP BY Country -- get aggregate per Country
ORDER BY SUM(Female) / SUM(Male) DESC -- Higher percentage goes up
LIMIT 1, 1 -- after 1st, next 1 row(s)
;