部門工資前三高所有員工

2021-10-01 06:16:25 字數 1638 閱讀 3781

employee 表包含所有員工資訊,每個員工有其對應的工號 id,姓名 name,工資 salary 和部門編號 departmentid 。

±—±------±-------±-------------+

| id | name | salary | departmentid |

±—±------±-------±-------------+

| 1 | joe | 85000 | 1 |

| 2 | henry | 80000 | 2 |

| 3 | sam | 60000 | 2 |

| 4 | max | 90000 | 1 |

| 5 | janet | 69000 | 1 |

| 6 | randy | 85000 | 1 |

| 7 | will | 70000 | 1 |

±—±------±-------±-------------+

department 表包含公司所有部門的資訊。

±—±---------+

| id | name |

±—±---------+

| 1 | it |

| 2 | sales |

±—±---------+

編寫乙個 sql 查詢,找出每個部門獲得前三高工資的所有員工。例如,根據上述給定的表,查詢結果應返回:

±-----------±---------±-------+

| department | employee | salary |

±-----------±---------±-------+

| it | max | 90000 |

| it | randy | 85000 |

| it | joe | 85000 |

| it | will | 70000 |

| sales | henry | 80000 |

| sales | sam | 60000 |

±-----------±---------±-------+

解釋:it 部門中,max 獲得了最高的工資,randy 和 joe 都拿到了第二高的工資,will 的工資排第三。銷售部門(sales)只有兩名員工,henry 的工資最高,sam 的工資排第二。

select d.name department,t2.name employee,t2.salary

from

(select e.name,e.salary,e.departmentid,

count(1

) cn

from employee e

left

join

(select

distinct departmentid,salary from employee

)t1on e.departmentid=t1.departmentid and e.salarygroup

by e.name,e.salary,e.departmentid

)t2join

department d

on t2.departmentid=d.id

where

t2.cn<=

2order

by t2.cn

185 部門工資前三高的所有員工

employee 表包含所有員工資訊,每個員工有其對應的工號 id,姓名 name,工資 salary 和部門編號 departmentid department 表包含公司所有部門的資訊。編寫乙個 sql 查詢,找出每個部門獲得前三高工資的所有員工。例如,根據上述給定的表,查詢結果應返回 it 部...

185 部門工資前三高的所有員工

employee 表包含所有員工資訊,每個員工有其對應的工號 id,姓名 name,工資 salary 和部門編號 departmentid id name salary departmentid 1 joe 85000 1 2 henry 80000 2 3 sam 60000 2 4 max 9...

查詢部門工資前三高的員工資訊

select p2.name as department,p3.name as employee,p3.salary as salary from employee as p3 left join department as p2 on p2.id p3.departmentid where sel...