首页 > 数据库技术 > 详细

Mysql 查找表中的前n大元素

时间:2018-03-22 12:04:47      阅读:304      评论:0      收藏:0      [点我收藏+]

转载注明出处:http://www.cnblogs.com/liangyongrui/p/8622593.html

Mysql 查找表中的前n大元素

用程序写很简单,利用堆维护一下就行了,但是用sql呢?

解法:

假设需要比较的字段是a,找出前n大的行,则答案为count(比a小的行) < n的行。(说起来有点绕。。看个例子就懂了)

假设有这样的一个表

Id Name Salary
1 Joe 70000
2 Henry 80000
3 Sam 60000
4 Max 90000
5 Janet 69000
6 Randy 85000

找出薪水的前三名

SELECT
  e1.Name,
  e1.Salary
FROM Employee e1
WHERE 3 >
      (
        SELECT count(DISTINCT e2.Salary)
        FROM Employee e2
        WHERE e2.Salary > e1.Salary
      );

结果为

Name Salary
Joe 70000
Henry 80000
Max 90000

参考资料:https://leetcode.com/problems/department-top-three-salaries/solution/

Mysql 查找表中的前n大元素

原文:https://www.cnblogs.com/liangyongrui/p/8622593.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!