#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, а не всю таблицу.