如何使用 SQL 创建一个表来查看病假电话数量及其开始和结束日期

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

我正在尝试创建一个表格来查看按

employeeID
订购的所有疾病呼叫,还显示“疾病”期间的开始和结束时间。

SELECT
    EmployeeID,
    StartDateTime, EndDateTime,
    hourtype,
    LEAD(hourtype, 1, 'other') OVER (PARTITION BY EmployeeID ORDER BY StartDateTime) AS NextHourType
FROM
    dflxs.stg_registeredhours 
WHERE
    employeeID = 29

|Screenshot of Query Result

预期结果:

员工ID 开始日期 结束日期 生病电话
29 2021-10-08 2021-10-8 1
29 2022-02-22 2022-02-22 2
sql window-functions
1个回答
0
投票

您希望显示按 EmployeeID 排序的所有病假电话,并显示病假期的开始和结束时间。为此,可以使用时间窗口(窗口函数)和SQL分析函数。以下是用于此目的的 SQL 语言示例查询:

SELECT
    EmployeeID,
    MIN(StartDateTime) AS StartDate,
    MAX(EndDateTime) AS EndDate,
    COUNT(*) AS SicknessCall
FROM
    dflxs.stg_registeredhours
WHERE
    EmployeeID = 29
GROUP BY
    EmployeeID, hourtype, 
    DATEDIFF(day, '1970-01-01', StartDateTime)
HAVING COUNT(*) >= 2
ORDER BY EmployeeID, StartDate;

此查询根据 EmployeeID、小时类型以及病假期间的开始日期 (StartDate) 和结束日期 (EndDate) 显示组中 29 号员工的所有病假电话。它还计算每个期间的病假电话总数,并按员工编号和开始日期对结果进行排序。

© www.soinside.com 2019 - 2024. All rights reserved.