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

查询时间区间内特殊日标识总和大于14的区间记录

问题描述

我有两张表:

  1. 第一张表(假设名为date_ranges)存储时间区间的起始和结束日期,结构如下:
DATE_START   |   DATE_END
------------------------------
2020-01-04       2023-07-04
  1. 第二张表(假设名为calendar)是日历表,包含日期和布尔类型的SPECIAL_DAY_FLAG(特殊日标识),结构如下:
DATE         |   SPECIAL_DAY_FLAG
------------------------------
2020-01-04       1
2020-01-05       0

需要编写SQL查询语句,仅返回第一张表中DATE_START和DATE_END之间特殊日标识总和大于14的行。

解决方案

通过关联两张表并分组聚合的方式实现,具体SQL语句如下:

SELECT dr.DATE_START, dr.DATE_END
FROM date_ranges dr
JOIN calendar c 
  ON c.DATE BETWEEN dr.DATE_START AND dr.DATE_END
GROUP BY dr.DATE_START, dr.DATE_END
HAVING SUM(c.SPECIAL_DAY_FLAG) > 14;

逻辑说明

  • 用JOIN关联两张表,筛选出日历表中落在每个时间区间内的日期记录
  • 通过GROUP BY按时间区间分组,用SUM(SPECIAL_DAY_FLAG)统计该区间内特殊日的总数
  • 最后用HAVING子句过滤出特殊日总数大于14的区间

如果你的表名不是date_ranges和calendar,替换成实际表名即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 20:00:47