RANK()如何在Sql中的多列上工作?

问题描述 投票:0回答:1

您能否解释一下这段SQL是如何工作的? QUALIFY选择第一个值,很明显

QUALIFY RANK(column1 ASC, column2 ASC, column3 , column4)=1

Rank()对column1之后的下一列有什么作用?

sql transactions teradata rank
1个回答
0
投票

首先,强烈不建议使用RANK()。参见documentation

更好的写法是:

QUALIFY RANK() OVER (ORDER BY column1 ASC, column2 ASC, column3 , column4) = 1

这等效于在满足以下条件的情况下返回所有行:

  1. column1为最小值。
  2. [column2具有(1)中所有内容的最小值。
  3. [column3具有(2)中所有内容的最小值。
  4. [column4具有(3)中所有值的最小值。

即,数据按四个键排序,并返回第一行-并在四个键上与之匹配的所有行均返回。

© www.soinside.com 2019 - 2024. All rights reserved.