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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:30:03