標籤:bsp sql查詢 查詢 tin mysql 資訊 sql 意思 rand
Employee 表包含所有員工資訊,每個員工有其對應的 Id, salary 和 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 |+----+-------+--------+--------------+
Department 表包含公司所有部門的資訊。
+----+----------+| Id | Name |+----+----------+| 1 | IT || 2 | Sales |+----+----------+
編寫一個 SQL 查詢,找出每個部門工資前三高的員工。例如,根據上述給定的表格,查詢結果應返回:
+------------+----------+--------+| Department | Employee | Salary |+------------+----------+--------+| IT | Max | 90000 || IT | Randy | 85000 || IT | Joe | 70000 || Sales | Henry | 80000 || Sales | Sam | 60000 |+------------+----------+--------+
select d.Name Department,e1.Name Employee,e1.Salary
from Employee e1,Department d where e1.DepartmentId=d.Id and
(select count(distinct e2.Salary) from Employee e1,Employee e2 where e1.DepartmentId=e2.DepartmentId and e2.Salary>e1.Salary)<3
order by d.Name,e1.Salary DESC
意思就是:我們要查詢的這個人,在這部門中工資比他高的少於3個人(0,1,2人)。
括弧裡面是查詢在這部門中工資比他高的人的數量。
mysql查詢每個部門/班級前幾名