如何编写SQL语句按FLAG分组获取EVENT DATE的MIN和MAX值
解决方案
嘿,这个需求很容易实现,用GROUP BY配合聚合函数就能精准得到你想要的结果!
核心SQL语句
假设你的表名为event_table(记得替换成你实际的表名),执行以下语句即可:
SELECT FLAG, MIN(EVENT_DATE) AS MIN_EVENT_DATE, MAX(EVENT_DATE) AS MAX_EVENT_DATE FROM event_table GROUP BY FLAG ORDER BY FLAG;
语句说明
GROUP BY FLAG:按照FLAG的取值(0和1)对数据进行分组MIN(EVENT_DATE):计算每个分组里最早的事件日期,别名MIN_EVENT_DATE对应你预期结果里的列MAX(EVENT_DATE):计算每个分组里最晚的事件日期,别名MAX_EVENT_DATE对应预期列ORDER BY FLAG:可选的排序操作,让结果按FLAG从小到大排列,和你给出的预期结果格式完全匹配
执行后返回的结果结构就会和你想要的一致:
| FLAG | MIN_EVENT_DATE | MAX_EVENT_DATE |
|---|---|---|
| 0 | 2023-01-01 | 2023-01-05 |
| 1 | 2023-01-02 | 2023-01-06 |
内容的提问来源于stack exchange,提问作者troey
相关产品推荐
相关产品推荐

