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

如何用SQL按日期列统计Odertime在date前后的记录数?

需求说明

现有数据表如下:

IDtypedateOdertime
1A2022-03-022021-06-23
2A2022-03-052021-06-25
1A2022-03-022022-10-09
3A2022-03-062021-04-05
2A2022-03-052022-02-05
2A2022-03-052022-05-13

需要按ID和type分组,统计每组中Odertime早于date的记录数(命名为before),以及Odertime晚于date的记录数(命名为after),期望得到结果表:

IDtypebeforeafter
1A11
2A21
3A10
解决方案

使用SQL的条件聚合函数即可实现,通过CASE WHEN判断每条记录的时间关系,结合SUM()累加统计,最后按指定字段分组:

SELECT 
    ID,
    type,
    SUM(CASE WHEN Odertime < date THEN 1 ELSE 0 END) AS before,
    SUM(CASE WHEN Odertime > date THEN 1 ELSE 0 END) AS after
FROM 
    your_table_name
GROUP BY 
    ID, type;

关键说明

  • CASE WHEN Odertime < date THEN 1 ELSE 0 END:对单条记录判断时间先后,满足条件返回1,否则返回0,SUM()累加后得到before的总数
  • CASE WHEN Odertime > date THEN 1 ELSE 0 END:同理,统计Odertime晚于date的记录数,得到after字段
  • GROUP BY ID, type:确保统计结果按ID和type的唯一组合分组呈现

注:请将语句中的your_table_name替换为实际的数据表名称。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 12:55:25