SQL查詢一個表中類別字段中Max()最大值對應的記錄


數據庫有一個表 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/

只能說一山更比一山高,要學的東西還多着呢!!!繼續加油!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM