數據庫有一個表 Employee,里面有個點擊量字段Salary和一個類別字段DepartmentId以及其它信息字段,
現在要搜出每個類別中Salary最大的那條記錄,如果是10個類別,那么結果應該是10條記錄,
如果最大Salary有兩個相同的則全部保留:
select Department.Name Department, a.Name Employee, Salary from Employee as a inner join Department on Department.Id=a.DepartmentId where Salary=(select max(b.Salary) from Employee as b where a.DepartmentId = b.DepartmentId ) order by Salary
更高效,很好理解:
SELECT Department.name AS 'Department', Employee.name AS 'Employee', Salary FROM Employee JOIN Department ON Employee.DepartmentId = Department.Id WHERE (Employee.DepartmentId , Salary) IN ( SELECT DepartmentId, MAX(Salary) FROM Employee GROUP BY DepartmentId )
如果最大Salary有兩個相同的則只要一個:
select Department.Name Department, a.Name Employee, Salary from ( select Name,DepartmentId,Salary from Employee as a where Salary=( select max(b.Salary) from Employee as b where a.DepartmentId = b.DepartmentId ) ) as a inner join Department on Department.Id=a.DepartmentId group by DepartmentId order by Salary
(測試環境:MySql)
引用原文地址:http://blog.csdn.net/bushizhuanjia/article/details/6854208
我是在LeetCode中遇到的:https://leetcode.com/problems/department-highest-salary/description/
只能說一山更比一山高,要學的東西還多着呢!!!繼續加油!