You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在PostgreSQL中计算各行政区城镇人口占总人口的百分比

计算PostgreSQL中各行政区城镇人口占比的解决方案

嘿,刚好能帮你搞定这个统计需求!首先我得先明确下——你提到的settlement表第三列应该是人口数值吧?我暂且把它命名为population,如果实际列名不一样,你替换成真实名称就行。

核心思路

我们需要按行政区分组,先算出每个行政区的总人口,再统计该行政区内属于「城镇类」的人口总和(这里我默认把City、Town、Suburb归为城镇类型,如果你有不同的划分标准,直接调整筛选条件就行),最后用城镇人口除以总人口,再转成百分比格式。

完整SQL语句

SELECT
    行政区列名 AS 行政区,
    ROUND(
        (SUM(population) FILTER (WHERE 聚居地类型列名 IN ('City', 'Town', 'Suburb'))::NUMERIC 
         / NULLIF(SUM(population), 0)) * 100,
        1
    ) AS 城镇人口占比(%)
FROM settlement
GROUP BY 行政区列名
ORDER BY 行政区列名;

语句说明

  • FILTER (WHERE ...):专门筛选出城镇类型的人口总和,比CASE表达式更简洁直观
  • NULLIF(SUM(population), 0):避免出现总人口为0时的除以0错误,这种情况会返回NULL
  • ROUND(..., 1):把百分比保留1位小数,你可以根据需求调整位数
  • ORDER BY:让结果按行政区顺序排列,方便查看

示例输出

行政区城镇人口占比(%)
A62.3
B75.8
C41.5
......

如果你的聚居地类型划分标准不同(比如要把Town排除在外),只需要修改IN ('City', 'Town', 'Suburb')里的取值就行,非常灵活。

内容的提问来源于stack exchange,提问作者morteza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:10:35