SQL技术需求:统计满足start_dt相关三周时间窗口的emp_id数量
符合条件的员工ID统计SQL实现
核心规则
统计emp_id的数量,仅当first_stamp处于以**周日(start_dt)**为中心的三周21天窗口内:
- 窗口覆盖:
start_dt前一周(含周日)、start_dt所在周、start_dt后一周(含周六) - 日期范围等价于:
start_dt - 7天至start_dt + 13天(首尾均包含)
SQL代码
统计符合条件的员工总数
SELECT COUNT(DISTINCT emp_id) AS valid_employee_count FROM your_table_name WHERE first_stamp >= DATE_SUB(start_dt, INTERVAL 7 DAY) AND first_stamp <= DATE_ADD(start_dt, INTERVAL 13 DAY);
带状态标记的明细查询(用于验证)
如果需要查看每个员工的资格状态,可以使用:
SELECT emp_id, first_stamp, start_dt, CASE WHEN first_stamp >= DATE_SUB(start_dt, INTERVAL 7 DAY) AND first_stamp <= DATE_ADD(start_dt, INTERVAL 13 DAY) THEN '符合条件' ELSE '不符合条件' END AS eligibility_status FROM your_table_name;
示例验证
- 当
start_dt为10/16(周日)时,有效区间是10/09至10/29:员工123的first_stamp为10/21,处于区间内,会被统计。 - 当
start_dt为10/23(周日)时,有效区间是10/16至11/04:员工345的first_stamp在此区间内则符合统计条件。
内容的提问来源于stack exchange,提问作者user20391531
相关产品推荐
相关产品推荐

