允许对窗口函数的结果进行过滤。它与 WHERE 子句类似,但不同之处在于:WHERE 在窗口函数计算之前执行,而 QUALIFY 在其后执行。
在 QUALIFY 子句中,可以通过别名引用 SELECT 子句里的窗口函数结果。或者,QUALIFY 子句也可以基于未在查询结果中返回的其他窗口函数结果进行过滤。
限制
如果没有需要计算的窗口函数,就不能使用 QUALIFY。请改用 WHERE。
示例
示例:
SELECT number, COUNT() OVER (PARTITION BY number % 3) AS partition_count
FROM numbers(10)
QUALIFY partition_count = 4
ORDER BY number;┌─number─┬─partition_count─┐
│ 0 │ 4 │
│ 3 │ 4 │
│ 6 │ 4 │
│ 9 │ 4 │
└────────┴─────────────────┘