我正在运行一个类似于下面的查询,以在7天的窗口中累积到日期的正数和总事件的总和。
SELECT
first_value(date) OVER (ORDER BY date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS date_left,
last_value(date) OVER (ORDER BY date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS date_right,
sum(positives) OVER (ORDER BY date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS events,
sum(events) OVER (ORDER BY date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS total
FROM
data
虽然这个查询工作,但它不是很漂亮,因为它重复了相同的长窗口规范4次。
有没有办法"保存"?Presto中的一个窗口,还是在同一个窗口上使用几个函数?
为了回应@Gordon Linoff和@Guru Stron在评论中所说的,PrestoDB确实支持窗口函数,但不支持WINDOW
子句。然而,Trino(以前的PrestoSQL)支持WINDOW
,并且Trino最近在今年早些时候增加了更多的特性。如:
- 完全支持
RANGE
帧类型 - 支持
GROUPS
帧类型 - 更多支持
WINDOW
子句。
如果你的团队需要这些类型的功能,我建议升级到Trino。