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

SQL查询:如何在分组统计城市人口时同时展示全表人口总计?

实现带全表人口总计的城市人口统计查询

现有一张名为Population的表,表结构及数据如下:

City        Building_no     population
Chicago      5                10
Chicago      6                20
Denver       8                25
Denver       9                30

目前已通过以下SQL语句查询出各城市的人口总和:

select city, sum(population) from population group by city

现在需要在查询结果中增加Total_Population列(全表人口总计,值为85),得到如下期望输出:

City       City_Population     Total_Population
Chicago     30                  85
Denver      55                  85

解决方案

以下提供几种适配主流数据库的实现方式:

方法1:使用窗口函数(推荐,支持MySQL 8.0+、PostgreSQL、SQL Server等)

利用窗口函数直接计算全表级别的总和,无需额外关联操作:

SELECT 
    city,
    SUM(population) AS City_Population,
    SUM(SUM(population)) OVER() AS Total_Population
FROM population
GROUP BY city;

外层的SUM(SUM(population)) OVER()会自动计算所有分组后城市人口的总和,即全表人口总计。

方法2:子查询获取全表总计(兼容低版本数据库)

如果数据库不支持窗口函数,可通过子查询单独计算全表总和,再与分组结果关联:

SELECT 
    p.city,
    SUM(p.population) AS City_Population,
    t.total AS Total_Population
FROM population p
CROSS JOIN (SELECT SUM(population) AS total FROM population) t
GROUP BY p.city, t.total;

CROSS JOIN会将分组后的每条记录与全表总计结果做笛卡尔积,让每条记录都带上总计值。

方法3:硬编码总计值(仅临时固定数据场景使用)

若确定全表人口总计不会变动,可直接写死数值,但此方式灵活性差,数据更新后需手动修改:

SELECT 
    city,
    SUM(population) AS City_Population,
    85 AS Total_Population
FROM population
GROUP BY city;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 10:10:58