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/

只能说一山更比一山高,要学的东西还多着呢!!!继续加油!

转载于:https://www.cnblogs.com/EasonDongH/p/8385259.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值