Я пытаюсь решить проблему SQL в Интернете, который имеет 2 таблицы как следующие,Как выбрать топ-3 зарплаты отдела?
Employee стол
таблица Сотрудник держит всех сотрудников.
+----+-------+--------+--------------+
| Id | Name | Sa1ary | DepartmentId |
+----+-------+--------+--------------+
| 1 | Joe | 70000 | 1 |
| 2 | Henry | 80000 | 2 |
| 3 | Sam | 60000 | 2 |
| 4 | Max | 90000 | 1 |
| 5 | Janet | 69000 | 1 |
| 6 | Randy | 85000 | 1 |
+----+-------+--------+--------------+
Отдел стол
SQL, должна возвращать следующие данные
У меня есть запросы SQL как следующие,
SELECT D.Name AS Department, E.Name AS Employee, E.Salary AS Salary
FROM Employee E INNER JOIN Department D ON E.DepartmentId = D.Id
WHERE (SELECT COUNT(DISTINCT(Salary)) FROM Employee
WHERE DepartmentId = E.DepartmentId AND Salary > E.Salary) < 3
ORDER by E.DepartmentId, E.Salary DESC;
SQL хорош, но я немного смущен относительно части < 3
. Разве это не должно быть = 3, так как в вопросе спрашивали о 3 зарплатах? Я ценю объяснение SQL и буду полезен.
Вы уверены, что SQL правильный? –
SQL корректен, и проблема связана с Leetocde –
Arefe
Нет. Вы оцениваете ранг каждой зарплате. В тройку входят те, у которых ранг меньше или равен 3. – Strawberry