将递归查询从一周中的周转换为月中的月

时间:2016-05-05 14:09:57

标签: sql postgresql common-table-expression recursive-query

我有一个递归查询,它提供一周一周的订单数量(week_no,week_start和week_end)。我想针对一个月的分析创建类似的细分。

WITH recursive weeks (week_start, week_end, time_end, weekno) AS (
VALUES ('2015-12-27'::date, '2016-01-02'::date, '2016-04-02'::date, 1) 
UNION ALL 
SELECT (week_end + interval '1 day')::date, 
       (CASE 
              WHEN (week_end + interval '7 days')::date > time_end THEN time_end 
              ELSE (week_end + interval '7 days')::date 
       END)::date, 
       time_end, 
       weekno+1 
FROM   weeks 
WHERE  time_end > week_end)

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

为什么要对此使用递归查询?使用java.net.SocketTimeoutException: failed to connect to /192.168.1.15 (port 5984)

generate_series()

几个月的等价物将是:

select g.week_start, g.week_start + interval '6 day' as week_end,
       row_number() over (order by g.week_start) as weeknum
from generate_series('2015-12-27'::timestamp,
                     '2016-01-02'::timestamp,
                     interval '1 week'
                    ) g(week_start);
相关问题