PostgreSQL如何根据关联表计算两个日期间的节假日天数
PostgreSQL查询实现方案
你可以通过左连接匹配区间内的节假日后统计数量,具体查询语句如下:
SELECT w.emp_id, w.work_start, w.work_end, COUNT(h.id) AS day_holiday FROM workday_emp w LEFT JOIN holiday_tbl h ON h.date BETWEEN w.work_start AND w.work_end GROUP BY w.emp_id, w.work_start, w.work_end ORDER BY w.emp_id;
逻辑说明
- 用
LEFT JOIN关联员工工作日表和节假日表,关联条件为节假日日期落在员工的work_start到work_end闭区间内 - 按员工的三个唯一字段分组后,统计匹配到的节假日记录数,没有匹配到的场景下
COUNT(h.id)会自动返回0,符合需求 - 如果你表中的日期字段存储为字符串类型,需要先转为
DATE类型再做比较,关联条件可以改成h.date::DATE BETWEEN w.work_start::DATE AND w.work_end::DATE
内容的提问来源于stack exchange,提问作者SYAHRIL ASIDIQ FIRDAUS
相关产品推荐
相关产品推荐

