有没有办法使用硬边界的范围?
正确的代码是:
SELECT user_id,
created_at,
COUNT(*) OVER (ORDER BY created_at
RANGE BETWEEN '30 days' PRECEDING
AND '30 days' FOLLOWING) AS qty_in_period
但是这个样本是错误的:
SELECT user_id,
created_at,
COUNT(*) OVER (ORDER BY created_at
RANGE BETWEEN UNBOUNDED PRECEDING
AND (reg_date+interval) FOLLOWING) AS qty_in_period
reg_date是时间戳类型,间隔为'1 month'。
我知道,它可以用WHERE构造来完成,但我需要检查通过窗口函数来完成的可能性。
请帮帮我
1条答案
按热度按时间nwnhqdif1#
有没有办法为
RANGE
使用硬边框?没有。文件中对此有明确说明:
在
offset PRECEDING
和offset FOLLOWING
框架选项中,offset
必须是不包含任何变量、聚合函数或窗口函数的表达式。尝试使用此类语法会引发以下错误:
错误:RANGE的参数不能包含变量
一种替代方法是使用相关子查询或横向连接。示例中的最后一个查询可以写成: