PostgreSQL中滚动3个月周期内工单重复发生率查询
工单重复统计:窗口函数适用性及Chartio文章方向判断
是否需要窗口函数?
肯定需要,窗口函数是处理这类需求的最优方案之一:
- 它能精准划定包含当月的过去3个月的时间范围,结合
PARTITION BY ticket_type按工单类型分组,计算每个工单在对应时间窗内的同类型出现次数。 - 后续只需筛选出每个月关闭的工单,统计其中同类型出现次数≥2的工单数量,就能得到目标结果。
给个简化的SQL示例(以PostgreSQL为例):
WITH monthly_closed_tickets AS ( SELECT DATE_TRUNC('month', close_time) AS close_month, ticket_type, ticket_id FROM tickets WHERE close_time IS NOT NULL ), ticket_repeat_check AS ( SELECT close_month, ticket_type, ticket_id, -- 统计当前工单类型在过去3个月(含当月)的出现次数 COUNT(*) OVER ( PARTITION BY ticket_type ORDER BY close_month RANGE BETWEEN INTERVAL '2 months' PRECEDING AND CURRENT ROW ) AS same_type_in_3months FROM monthly_closed_tickets ) SELECT close_month, -- 统计同类型在3个月内重复出现的工单数量 COUNT(CASE WHEN same_type_in_3months > 1 THEN ticket_id END) AS repeat_ticket_count FROM ticket_repeat_check GROUP BY close_month ORDER BY close_month;
Chartio文章方向是否正确?
如果你的Chartio文章聚焦于时间范围窗口函数的使用、分组统计重复记录这类内容,那方向完全正确。这类工单重复统计的核心逻辑,正是通过窗口函数划定时间窗+分组统计频次,和Chartio常用的数据分析思路高度匹配。
内容的提问来源于stack exchange,提问作者eponkratova
相关产品推荐
相关产品推荐

