Как получить номер строки для строки после сортировки с использованием SQLite? - PullRequest
0 голосов
/ 19 октября 2019

Моя таблица базы данных (Сотрудник) состоит из двух столбцов (Имя, Зарплата). Я попытался отсортировать таблицу на основе зарплаты в порядке убывания и получить соответствующий номер строки на основе имени. (Чтобы присвоить ранг на основе самой высокой зарплаты).

Я пробовал этот запрос

SELECT
    ROW_NUMBER () OVER ( 
    ORDER BY Salary 
   ) RowNum
FROM
    Employee
WHERE
    Name='Ram';

На моем столе Рам получает вторую самую высокую зарплату. Поэтому я ожидаю, что на выходе будет 2. Но я получил только ошибки. Пожалуйста, кто-нибудь, помогите мне с этой проблемой.

1 Ответ

1 голос
/ 19 октября 2019

Ваш запрос возвращает только 1 строку из-за условия:

WHERE Name='Ram'

Таким образом, вы всегда получите 1 как результат.

Выберите номер строки из подзапроса с помощью RANK() для обработки связей для зарплат и используйте DESC для сортировки по убыванию зарплат:

SELECT t.RowNum FROM (
  SELECT Name, RANK() OVER (ORDER BY Salary DESC) RowNum
  FROM Employee
) t
WHERE t.Name='Ram';

Еще прощеа может и более эффективное решение без оконных функций:

SELECT COUNT(*) + 1 RowNum
FROM Employee 
WHERE Salary > (SELECT Salary FROM Employee WHERE Name='Ram');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...