问题:
The Employee table holds all employees. Every employee has an Id, and there is also a column for the department Id.
(Employee 表中含有所有的雇员。每个雇员有自己的 id 和 department id。)
+----+-------+--------+--------------+ | Id | Name | Salary | 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 | +----+-------+--------+--------------+
The Department table holds all departments of the company.
(Department 表中含有公司的所有部门。)
+----+----------+ | Id | Name | +----+----------+ | 1 | IT | | 2 | Sales | +----+----------+
Write a SQL query to find employees who earn the top three salaries in each of the department. For the above tables, your SQL query should return the following rows.
(写出能够找到每个部门薪水前三名员工的 sql 语句。根据上边的表,你的结果应该包含以下列。)
+------------+----------+--------+ | Department | Employee | Salary | +------------+----------+--------+ | IT | Max | 90000 | | IT | Randy | 85000 | | IT | Joe | 70000 | | Sales | Henry | 80000 | | Sales | Sam | 60000 | +------------+----------+--------+
我的解决方法
SELECT t2. NAME AS Department, t1. NAME AS Employee, t1.Salary AS Salary FROM Employee t1, Department t2 WHERE t1.DepartmentId = t2.Id AND ( SELECT count(distinct(Salary)) FROM Employee t3 WHERE t3.DepartmentId = t1.DepartmentId AND t3.Salary > t1.Salary ) < 3 ORDER BY Department, Salary DESC
暂时没有留言