Как RANK () работает с несколькими столбцами в Sql? - PullRequest
0 голосов
/ 24 января 2020

Не могли бы вы объяснить, как работает этот кусок SQL? QUALIFY выбирает первое значение, оно понятно

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

Что Rank() делает со следующими столбцами после column1?

1 Ответ

0 голосов
/ 24 января 2020

Во-первых, использование RANK() НАСТОЯТЕЛЬНО не рекомендуется. См. Документацию .

. Лучший способ написать это:

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

Это эквивалентно возвращению ВСЕХ строк со следующими условиями:

  1. column1 имеет минимальное значение.
  2. column2 имеет минимальное значение для всего в (1).
  3. column3 имеет минимальное значение для всего в ( 2).
  4. column4 имеет минимальное значение для всего в (3).

То есть данные упорядочиваются по четырем клавишам, а первая строка - и все строки, соответствующие ему по четырем клавишам - возвращаются.

...