PostgreSQL查询:统计各数据源每日工单生成与发送状态
PostgreSQL 查询每个数据源当日工单状态
可以通过从source表出发,结合两次左连接来覆盖所有场景,查询语句如下:
SELECT b.id_source, c.sent FROM source AS b LEFT JOIN tickets AS j ON b.id_source = j.idsource AND j.date = CURRENT_DATE -- 限定当日的工单记录 LEFT JOIN register AS c ON j.id_ticket = c.id_ticket AND c.date = CURRENT_DATE -- 限定当日的发送记录 ORDER BY b.id_source;
逻辑说明:
- 以
source表为基础,确保返回所有数据源,不会遗漏任何一个 - 第一次左连接
tickets表:仅匹配当日的工单记录,若某数据源当日工单生成失败,则tickets关联结果为NULL - 第二次左连接
register表:基于工单ID关联当日的发送记录,只有工单生成成功的数据源才会关联到register的记录:- 发送成功时
sent=1 - 发送失败时
sent=0 - 工单生成失败时,
sent字段为NULL
- 发送成功时
注意事项:
如果你的date字段包含时间戳(而非纯日期),需要将字段转换为日期格式再匹配,比如将j.date = CURRENT_DATE改为j.date::date = CURRENT_DATE,避免因时间部分不匹配导致的关联失败。
内容的提问来源于stack exchange,提问作者Tms91
相关产品推荐
相关产品推荐

