如何使用Oracle SQL统计相同ID对应的不同日期的数量
Oracle SQL 按ID统计不同日期数量实现方案
你可以使用COUNT(DISTINCT)聚合函数搭配分组查询实现需求,示例SQL如下:
SELECT id, COUNT(DISTINCT datedt) AS nb FROM -- 此处替换为你实际的表名 your_table_name GROUP BY id -- 可选配置:按ID排序方便查看结果 ORDER BY id;
逻辑说明
COUNT(DISTINCT datedt)会自动统计每个分组下datedt字段的非重复值数量,完全匹配你需要的不同日期统计规则GROUP BY id指定按id维度分组聚合,确保每个id对应一条统计结果- 输出字段正好是你要求的
id和统计值nb
注意事项
如果你的datedt字段是Oracle的DATE类型且存储了时分秒信息,仅需要按自然日期去重的话,可调整为对日期做截断处理:
SELECT id, COUNT(DISTINCT TRUNC(datedt)) AS nb FROM your_table_name GROUP BY id ORDER BY id;
示例数据对应输出结果
| id | nb |
|---|---|
| 123 | 2 |
| 452 | 1 |
| 777 | 1 |
| 888 | 2 |
内容的提问来源于stack exchange,提问作者Abou Ilyès
相关产品推荐
相关产品推荐

