我正在分析我的同事的代码。 找到了这个查询:
SELECT
client_id
from lib.applications
QUALIFY Row_Number() Over(PARTITION BY client_id ORDER BY closed) = 1
WHERE closed=0 and application_date > '2016-01-01'
逻辑上,查询应返回具有活动(未关闭)应用程序的客户端列表。
我无法理解,为什么他在这里使用QUALIFY etc..
?
下面的请求更简单,并返回相同的内容:
SELECT
client_id
from lib.applications
WHERE closed=0 and application_date > '2016-01-01'
你有什么想法,为什么可以在这里使用QUALIFY?
答案 0 :(得分:1)
QUALIFY
每client_id
返回一行。编写查询的更通俗的方式是:
SELECT DISTINCT client_id
FROM lib.applications
WHERE closed = 0 and application_date > '2016-01-01';
也许查询的作者检查了性能并发现QUALIFY
在这种情况下更快(尽管我会怀疑)。也许作者想要包括其他专栏,在这种情况下SELECT DISTINCT
将不起作用。