SQL возвращает ранг элемента

#sql

#sql

Вопрос:

как создать запрос, который получает ранг элемента? (для базы данных Azure)

например :

 table name: studentScore

    studentName Scrore 
    student1      80
    student2      70
    student3      90
    student4      60
 

хотите получить ранг student1, который равен 2.

что я пробовал:

 SELECT ROW_NUMBER() OVER(ORDER BY [Scrore])AS Rank 
FROM studentScore where [name] = 'student1'
 

Возврат

 Rank
  1
 

Я хочу

 Rank
 2
 

Комментарии:

1. выберите * from (ВЫБЕРИТЕ ROW_NUMBER() ПОВЕРХ(ПОРЯДОК ПО [Scrore] desc)В КАЧЕСТВЕ ранга, studentName ИЗ StudentScore) t, где Name = ‘student1’

Ответ №1:

Вы можете использовать функции rank() или dense_rank():

 declare
    @t table (studentName varchar (100), Score int)

  insert into @t
  values 
    ('student1', 80),
    ('student2', 70),
    ('student3', 90),
    ('student4', 60)

    select rank() over (order by Score desc) rnk, * from @t

    select dense_rank() over (order by Score desc) rnk, * from @t
 

ВЫВОД

ВЫВОД

Комментарии:

1. Добавлен ‘desc’ для порядка сортировки

2. но он не возвращает ранг ученика 1.

3. @GabrielLam Studen1 имеет ранг 2

4. правильно, я знаю, но это не то, что я хочу, я хотел, чтобы он возвращал ранг 2, а не всю таблицу.