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

SQL使用GROUP BY时如何同时统计各城市租金及所有城市总租金

解决方案

有两种常见的实现方式,优先推荐用ROLLUP扩展语法,无需重复查询表数据:

方案1:使用GROUP BY ... WITH ROLLUP(推荐)

这是SQL标准提供的分组聚合扩展功能,可以直接在分组统计的基础上生成合计行:

SELECT 
  COALESCE(city_hometown, '所有城市总租金') AS city,
  SUM(rent) AS rent_generated_from_each_city
FROM profiles AS p
INNER JOIN tenancy_history AS t
  ON p.profile_id = t.profile_id
GROUP BY city_hometown WITH ROLLUP;
  • 说明:你原代码用的FULL JOIN会保留两边没有匹配的记录,如果仅需要统计有对应租户信息的租金,用INNER JOIN即可;如果需要统计无租金记录的城市(租金记0),换成LEFT JOIN即可,同步把SUM(rent)改为SUM(IFNULL(rent,0))。
  • 注意你原有代码中的表名写为tenancy_histories,和你给出的表定义tenancy_history不一致,执行前请核对实际表名调整。

方案2:使用UNION ALL拼接结果(兼容所有数据库版本)

如果你的数据库版本不支持ROLLUP语法,可以用UNION ALL把城市分组结果和总合计结果拼接起来:

-- 统计各城市租金
SELECT 
  city_hometown AS city,
  SUM(rent) AS rent_generated_from_each_city
FROM profiles AS p
INNER JOIN tenancy_history AS t
  ON p.profile_id = t.profile_id
GROUP BY city_hometown

UNION ALL

-- 统计所有城市总租金
SELECT 
  '所有城市总租金' AS city,
  SUM(rent) AS rent_generated_from_each_city
FROM tenancy_history;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 03:15:08