Необходимо ранжировать текущие зарплаты всех сотрудников по полю 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).
(SELECT * FROM salaries WHERE to_date = '9999-01-01') t1
(SELECT * FROM salaries WHERE to_date = '9999-01-01') t2
SELECT t1.emp_no, COUNT(DISTINCT t2.salary) FROM t1, t2 WHERE t2.salary > t1.salary GROUP BY t1.emp_no
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )