您能否解释一下这段SQL是如何工作的? QUALIFY
选择第一个值,很明显
QUALIFY RANK(column1 ASC, column2 ASC, column3 , column4)=1
Rank()
对column1之后的下一列有什么作用?
首先,强烈不建议使用RANK()
。参见documentation。
更好的写法是:
QUALIFY RANK() OVER (ORDER BY column1 ASC, column2 ASC, column3 , column4) = 1
这等效于在满足以下条件的情况下返回所有行:
column1
为最小值。column2
具有(1)中所有内容的最小值。column3
具有(2)中所有内容的最小值。column4
具有(3)中所有值的最小值。即,数据按四个键排序,并返回第一行-并在四个键上与之匹配的所有行均返回。