如何在 SQL 中查找连续的工作日?

问题描述 投票:0回答:0

我需要计算连续的工作日,并确定有 14 个或更多的成员。我的数据集将与此类似:

会员 日期 星期几 连续几天(需要创建)
会员1 2/10/23 星期五 1
会员1 2/13/23 星期一 2
会员1 2/14/23 星期二 3
会员1 2/17/23 星期五 1
会员2 2/2/23 星期四 1
会员2 2/3/23 星期五 2

我希望成员 1 的前 3 行计入连续天数而不是第 4 天,因为它不是连续的工作日(不担心假期)。

我开始只是用下面的代码找到连续的日子,我想我可以通过删除它们来调整它以考虑周末,但我想不出一个好的解决方案。

WITH pre AS
(
    SELECT 
        member, date, 
        DATE_ADD(date, - ROW_NUMBER() OVER (ORDER BY member, date)) DateGroup
    FROM 
        dataset1
    GROUP BY 
        member, date
),
pre2 as
(
    SELECT 
        MIN(u.date) startdt,
        MAX(u.date) enddt, 
        a.DateGroup, 
        DATEDIFF(MAX(u.date), MIN(u.date)) + 1 Consecutive_days, 
        u.date, u.member
    FROM 
        pre a 
    JOIN 
        dataset1 u ON u.date = a.date AND u.member = a.member
    GROUP BY 
        DateGroup, u.member
    ORDER BY 
        startdt
)
SELECT 
    startdt, enddt, Consecutive_days, member 
FROM 
    PRE2 
WHERE 
    Consecutive_days >= 14; 
sql row-number
© www.soinside.com 2019 - 2024. All rights reserved.