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

SQL查询求助:新增列按日期统计ID_Num的出现次数

解决方法:用窗口函数实现分组计数

嘿,你的需求刚好可以用SQL的窗口函数完美解决,完全不用给所有列加GROUP BY,正好满足你要保留其他多列的要求!

核心思路是利用COUNT()窗口函数,按ID_Num和Date做分区,这样就能计算出每个ID在对应日期下的出现次数,直接作为新增列返回,而且不会改变原表的行结构。

示例代码

假设你的表名叫your_table,需要查询的其他列比如还有Col1、Col2,可以这么写:

SELECT
  Date,
  ID_Num,
  Name,
  -- 新增的计数列:按ID和日期分组统计出现次数
  COUNT(*) OVER (PARTITION BY ID_Num, Date) AS ID_Date_Occurrences,
  -- 把你需要的其他所有列都放在这里
  Col1,
  Col2
FROM your_table;

效果说明

拿你提到的例子举例:

  • 当ID_Num=1001且Date='20/04/2018'时,这两行的ID_Date_Occurrences都会显示2
  • 当ID_Num=1001且Date='21/04/2018'或'22/04/2018'时,对应的行计数会显示1

窗口函数的优势就是不压缩原表行数,只是给每一行附加对应分组的统计值,所以你完全可以保留所有需要查询的列,不用受GROUP BY的限制~

内容的提问来源于stack exchange,提问作者S.McGuire

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:38:06