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

SQL查询:按岗位取最新行并统计符合资格的累计总天数

实现方案

核心思路

你只需要把已提取到的各岗位最新记录,和按岗位分组统计的符合资格总天数做关联即可,逻辑分两步:

  1. 按Job分组,统计所有Eligible = 'Y'的记录的总天数,单条记录的时段天数计算要包含首尾日期,所以日期差结果要+1
  2. 将你已经用lead函数提取到的各岗位最新记录,和上面统计出的各岗位总天数按Job字段关联,输出对应字段即可

通用SQL实现示例

WITH -- 如果你已经拿到了各岗位最新记录,可以省略下面的latest_records CTE,直接用你已有的结果集关联即可
latest_records AS (
    -- 取各岗位最新记录的实现,你也可以替换为自己已有的lead函数实现逻辑
    SELECT StDt, EdDt, Eligible, Job
    FROM (
        SELECT 
            StDt, EdDt, Eligible, Job,
            ROW_NUMBER() OVER(PARTITION BY Job ORDER BY StDt DESC) AS rn
        FROM emp_job_records
    ) t
    WHERE rn = 1
),
job_total AS (
    -- 统计各岗位所有符合资格记录的总天数
    SELECT 
        Job,
        SUM(DATEDIFF(day, StDt, EdDt) + 1) AS TotalDays -- 不同数据库日期差语法可自行调整:Oracle直接写EdDt - StDt + 1,MySQL写DATEDIFF(EdDt, StDt) +1
    FROM emp_job_records
    WHERE Eligible = 'Y'
    GROUP BY Job
)
SELECT l.*, t.TotalDays
FROM latest_records l
INNER JOIN job_total t ON l.Job = t.Job

逻辑验证

用你提供的示例数据测试:

  • J1岗位的两条符合资格记录:1月时段共31天、7月时段共31天,总天数31+31=62,和预期结果一致
  • J2岗位的一条符合资格记录:8月时段共31天,和预期结果一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:45:09