1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/xuthus5-Database-SQL-Actual-Combat

Клонировать/Скачать
23.对所有员工的薪水按照salary进行按照1-N的排名.md 2.3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 10.03.2025 00:53 c66e7df

Ранг текущих зарплат всех сотрудников по полю salary в порядке от 1 до N

Описание задачи

Необходимо ранжировать текущие зарплаты всех сотрудников по полю salary в порядке от 1 до N. При равной зарплате ранги должны совпадать, а при одинаковых рангах сортировка должна выполняться по полю emp_no в порядке возрастания.

CREATE TABLE `salaries` (
`emp_no` int(11) NOT NULL,
`salary` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`from_date`)
);

Ответ

SELECT t1.emp_no, t1.salary, COUNT(DISTINCT t2.salary) AS rank FROM (SELECT * FROM salaries WHERE to_date = '9999-01-01') t1, (SELECT * FROM salaries WHERE to_date = '9999-01-01') t2 WHERE t2.salary >= t1.salary GROUP BY t1.emp_no ORDER BY rank

Объяснение решения

Данная задача не проходит проверку на MySQL, но успешно проходит тестирование на SQLite (например, на платформе Nowcoder).

  1. Создаем два временных представления t1 и t2:
(SELECT * FROM salaries WHERE to_date = '9999-01-01') t1
(SELECT * FROM salaries WHERE to_date = '9999-01-01') t2
  1. Сравниваем значения поля salary между представлениями t1 и t2. Это позволяет получить набор данных, где зарплата сотрудника из t1 меньше зарплаты сотрудника из t2. На основе этого можно группировать данные и считать количество уникальных значений зарплат, превышающих текущую зарплату. Это значение будет использоваться как ранг. Почему используется DISTINCT? Потому что могут быть сотрудники с одинаковым рангом.
SELECT t1.emp_no, COUNT(DISTINCT t2.salary) FROM t1, t2 WHERE t2.salary > t1.salary GROUP BY t1.emp_no

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/xuthus5-Database-SQL-Actual-Combat.git
git@api.gitlife.ru:oschina-mirror/xuthus5-Database-SQL-Actual-Combat.git
oschina-mirror
xuthus5-Database-SQL-Actual-Combat
xuthus5-Database-SQL-Actual-Combat
master