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

SQL求和函数使用咨询:按中心及月份计算列值总和

解决按日期范围计算各中心X列全国总和的SQL方案

嘿,作为SQL新手完全不用慌,这个需求其实很直观,我给你拆解一下怎么实现:

首先先明确几个前提(你可以根据实际表结构调整):

  • 假设你的表名叫center_data
  • 存储中心名称的列叫center(值为'多伦多'/'蒙特利尔')
  • 要计算的全职员工数列叫full_time_count(也就是你说的X列)
  • 存储日期的列叫data_date(用来筛选指定月份)

1. 直接计算指定月份的全国总和(两个中心加起来)

如果只需要2018年1月的全国全职员工总数,用这个简单的查询就够了:

SELECT 
    SUM(full_time_count) AS 全国全职员工总数
FROM 
    center_data
WHERE 
    -- 筛选2018年1月的所有数据,这个方式能避免时分秒导致的数据遗漏
    data_date >= '2018-01-01' 
    AND data_date < '2018-02-01'
    -- 确保只包含多伦多和蒙特利尔两个中心
    AND center IN ('多伦多', '蒙特利尔');

2. 同时查看各中心明细+全国总和

如果想同时看到每个中心的数值,再加上总计行,可以用ROLLUP分组,结果会更清晰:

SELECT 
    -- GROUPING函数用来识别总计行,把总计行的中心名称显示为"全国总和"
    CASE WHEN GROUPING(center) = 1 THEN '全国总和' ELSE center END AS 中心名称,
    SUM(full_time_count) AS 全职员工总数
FROM 
    center_data
WHERE 
    data_date >= '2018-01-01' 
    AND data_date < '2018-02-01'
    AND center IN ('多伦多', '蒙特利尔')
-- ROLLUP会自动生成总计行
GROUP BY 
    ROLLUP(center);

几个关键注意点:

  • 记得把上面的表名、列名替换成你实际使用的名称,别直接复制就跑哦
  • 日期筛选用>= 月初 + < 下月初的方式,比BETWEEN更稳妥——如果你的日期列包含时分秒,BETWEEN '2018-01-01' AND '2018-01-31'会漏掉1月31日当天晚于0点的数据
  • 如果你的日期列是按年月存储的(比如格式为'2018-01'),那WHERE条件可以直接写成data_month = '2018-01',操作更简单

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:27:29