Запрос без разбиения по или функций вроде rank () - PullRequest
0 голосов
/ 13 июня 2019

Предположим, у нас есть таблица учеников (имя, класс, группа, год) Мы хотим запрос, который ранжирует для каждой группы соответствующих студентов. Я знаю, что это легко сделать с помощью rank () OVER (разделение по группам по классу DESC). Но я думаю, что это также можно сделать с помощью самостоятельного соединения или подзапроса. Есть идеи?

1 Ответ

1 голос
/ 13 июня 2019

Эквивалент rank():

select s.*,
       (select 1 + count(*)
        from students s2
        where s2.group = s.group and
              s2.grade > s.grade
       ) as rank
from students s;
...