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

如何用SQL GROUP BY处理pdays数据的工作日/周末时长统计

解决方案:按type_id分组计算工作日/周末time总和

先明确你的原始数据集:

idtimedate_timetype_id
122016-03-051
252016-03-051
332016-03-062
472016-03-073
522016-03-101
612016-03-123

你的需求是按type_id分组,计算指定周末日期(日数为5,6,12,13,19,20,26,27)和工作日的time总和,期望输出:

type_idweekday_timeweekends_time
172
230
371

实现思路&代码

完全贴合你提到的思路,我们用SQL的条件判断+分组聚合就能搞定:

  1. 从date_time里提取日数:用DAY(date_time)函数拿到日期的日部分
  2. 判断日数是否在指定的周末集合里,分别累加对应的time值
  3. 按type_id分组,得到每个类型的工作日/周末时间总和

具体SQL代码如下:

SELECT
    type_id,
    -- 工作日时间总和:日数不在周末集合就累加time,否则加0
    SUM(CASE WHEN DAY(date_time) NOT IN (5,6,12,13,19,20,26,27) THEN time ELSE 0 END) AS weekday_time,
    -- 周末时间总和:日数在周末集合就累加time,否则加0
    SUM(CASE WHEN DAY(date_time) IN (5,6,12,13,19,20,26,27) THEN time ELSE 0 END) AS weekends_time
FROM pdays
GROUP BY type_id
ORDER BY type_id;

代码解释

  • 第一个CASE语句:筛选出非周末的记录,把它们的time加起来,没有符合条件的记录就返回0,对应weekday_time
  • 第二个CASE语句:筛选出周末的记录,累加它们的time,没有符合条件的记录就返回0,对应weekends_time
  • GROUP BY type_id保证我们按类型分组计算,ORDER BY type_id让结果和你期望的输出顺序一致

跑这段代码就能得到你想要的结果啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:19:37