表Employee:
1 +----+-------+--------+--------------+
2 | Id | Name | Salary | DepartmentId |
3 +----+-------+--------+--------------+
4 | 1 | Joe | 70000 | 1 |
5 | 2 | Henry | 80000 | 2 |
6 | 3 | Sam | 60000 | 2 |
7 | 4 | Max | 90000 | 1 |
8 | 5 | Janet | 69000 | 1 |
9 | 6 | Randy | 85000 | 1 |
10 +----+-------+--------+--------------+
表Department:
1 +----+----------+
2 | Id | Name |
3 +----+----------+
4 | 1 | IT |
5 | 2 | Sales |
6 +----+----------+
写一段SQL查询各部门收入前三位的员工信息,返回结果如下:
1 +------------+----------+--------+
2 | Department | Employee | Salary |
3 +------------+----------+--------+
4 | IT | Max | 90000 |
5 | IT | Randy | 85000 |
6 | IT | Joe | 70000 |
7 | Sales | Henry | 80000 |
8 | Sales | Sam | 60000 |
9 +------------+----------+--------+
SELECT
a. NAME AS Department,
b. NAME AS Employee,
b.Salary
FROM
Department a,
Employee b
WHERE
b.DepartmentId = a.Id
AND (
SELECT
count(DISTINCT Salary)
FROM
Employee
WHERE
DepartmentId = a.Id
AND Salary > b.Salary
) < 3
ORDER BY
Department