【发布时间】:2020-02-03 21:23:57
【问题描述】:
我的 postgresql 数据库中有一张人员表。此表有一个包含值“M”和“F”的“性别”列。我想获取该表中性别为“M”的百分比。
更具体地说,我想获取这个百分比作为 group by 语句的一部分,该语句按邮政编码对人们进行分组(我们有一个邮政编码列)并返回每个邮政编码的男性百分比。
此语句成功获取整个表中的男性数量。
select count(*) from contacts_6 and sex='M'
此语句成功获取每个邮政编码和按邮政编码分组的总人数...
select home_zip, count(*) as total from contacts_6 where home_zip != '' group by home_zip
此语句成功获取了一个虚拟百分比,该百分比是根据虚拟值 2.0 除以每个邮政编码和按邮政编码分组的总人数...
select home_zip, ROUND(2.0 / count(*), 3) as stat from contacts_6 where home_zip != '' group by home_zip
如何将虚拟值 2.0 替换为邮政编码中的实际男性人数?
这个我试过了……
select home_zip, ROUND((select b from
(select count(*) from contacts_6 where contact_id < 10000 and sex='M') as b )
/ count(*), 3) as stat from contacts_6 where home_zip != '' group by home_zip
返回错误:
错误:操作符不存在:记录/bigint LINE 9: / count(*), 3) as stat from contacts_6 where home_zip ... ^ 提示:没有运算符匹配给定的名称和参数类型。您可能需要添加显式类型转换。 SQL 状态:42883 字符:695
【问题讨论】:
标签: sql postgresql select