我有一个递归查询,它提供一周一周的订单数量(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)
非常感谢任何帮助。
答案 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);