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

SQL技术实现:按国家汇总收入后关联人口表计算人均收入

计算各国人均Revenue的SQL实现

核心思路

先按国家汇总COMPANIES表的总营收,再通过国家字段关联人口表,最终用总营收除以对应国家的人口数得到人均值,同时处理可能的异常情况(比如人口为0或无匹配数据)。

基础实现(内连接,仅保留两表都有的国家)

假设人口表名为POPULATION,包含字段Country(国家名)和Population(人口数),SQL语句如下:

SELECT 
    c.Country,
    SUM(c.Revenue) AS Total_Revenue,
    p.Population,
    -- 避免除以0错误,同时保留两位小数
    CASE 
        WHEN p.Population = 0 THEN NULL
        ELSE ROUND(SUM(c.Revenue) / p.Population, 2) 
    END AS Per_Capita_Revenue
FROM COMPANIES c
JOIN POPULATION p ON c.Country = p.Country
GROUP BY c.Country, p.Population;

扩展实现(左连接,保留所有有营收数据的国家)

如果需要保留那些在人口表中没有对应数据的国家,改用LEFT JOIN:

SELECT 
    c.Country,
    SUM(c.Revenue) AS Total_Revenue,
    p.Population,
    CASE 
        WHEN p.Population IS NULL OR p.Population = 0 THEN NULL
        ELSE ROUND(SUM(c.Revenue) / p.Population, 2) 
    END AS Per_Capita_Revenue
FROM COMPANIES c
LEFT JOIN POPULATION p ON c.Country = p.Country
GROUP BY c.Country, p.Population;

关键说明

  • JOIN/LEFT JOIN:通过国家字段匹配两张表的数据,确保营收和人口对应同一国家
  • SUM(c.Revenue):按国家聚合计算总营收
  • CASE语句:处理人口为0或无匹配数据的异常,避免出现除以0的错误
  • ROUND函数:将人均值保留两位小数,提升结果可读性
  • GROUP BY:必须包含所有非聚合字段(Country和Population),符合SQL标准规范

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 10:32:41