Плотный ранг показывает неверное значение

#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».