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

SQL实现统计A表落在B表相邻两行日期区间内的记录行数

需求说明
  • 涉及两张业务表:表A、表B,其中表B包含日期类型列dateB
  • 统计逻辑:按表BdateB列的升序顺序,依次取相邻两行的日期值构造统计区间:第N行dateB为区间左边界、第N+1行dateB为区间右边界,逐段统计表A中date列值落在对应区间内的记录条数
  • 输出要求:返回结果集需包含每个表B原始dateB值对应的统计字段Qty

注:区间匹配规则为左闭右开,即匹配满足 date >= 区间左边界 AND date < 区间右边界 的记录;表B最后一行记录无后续相邻行,对应区间为[最后一行dateB值, +∞),统计逻辑与其他区间保持一致。

示例数据
  • 表A(仅包含date列)的记录值:10:00、10:01、10:05、10:20、10:21、10:22、10:23、10:24
  • 表B(仅包含dateB列)的记录值:10:00、10:10、10:20、10:30
  • 预期返回结果(包含date、Qty两列):
dateQty
10:003
10:100
10:205
10:300
参考实现(SQL)

通过窗口函数快速构造相邻日期间隔,再关联统计即可:

WITH b_interval AS (
    SELECT
        dateB AS start_date,
        LEAD(dateB, 1, '9999-12-31 23:59:59') OVER (ORDER BY dateB) AS end_date
    FROM tableB
)
SELECT
    bi.start_date AS date,
    COUNT(a.date) AS Qty
FROM b_interval bi
LEFT JOIN tableA a
    ON a.date >= bi.start_date
    AND a.date < bi.end_date
GROUP BY bi.start_date
ORDER BY bi.start_date;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.10 16:15:47