小编sql*_*foo的帖子

窗口函数中的 RANGE 子句错误

我正在尝试RANGE在窗口函数中使用 postgres子句将窗口动态设置为过去 4 周,不包括当前日期。这是我的尝试:

SELECT date("aa0"."created_at") AS "Day of Created At",
       "aa0"."user_id" AS "User Id",
       count (*) activities_today,
       count(*) over (PARTITION BY "aa0"."user_id"
                      ORDER BY date("aa0"."created_at") ASC
                      RANGE BETWEEN date("aa0"."created_at" - interval '4 weeks')
                                    AND 
                                    date("aa0"."created_at" - interval '1 day')
                ) active_days_past_4_weeks
FROM "public"."activity_activity" AS "aa0"
GROUP BY date("aa0"."created_at"), "aa0"."user_id" 
ORDER BY "Day of Created At" ASC LIMIT 1000;
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误:

ERROR: syntax error at or near ")" Position: 459
Run Code Online (Sandbox Code Playgroud)

如果我使用ROWS而不是RANGE它有效,但这不是正确的逻辑,因为不能保证每天都会有一行:

SELECT date("aa0"."created_at") AS "Day …
Run Code Online (Sandbox Code Playgroud)

postgresql window-functions postgresql-9.3

5
推荐指数
1
解决办法
2669
查看次数