#sql
#sql
Вопрос:
Я использую запрос ниже
select dense_rank() over ( partition by BAF order by GRADE desc ) rnk,
BAF, GRADE
from TABLE
Я получаю ниже неверных значений результатов
rnk BAF GRADE
17 AB 2M-70
18 AB 2M-192
Не могли бы вы рассказать, почему 2M-70 получают ранг 17, а 2M-192 — ранг 18.
Ответ №1:
Из контекста кажется, что ваша ОЦЕНКА сохраняется как строковый тип, такой как VARCHAR
или NVARCHAR
. Это означает ORDER BY
, что будет выполняться исключительно с помощью текста и не будет интерпретировать его как число; Таким образом, в порядке убывания символ «7» предшествует «1».