码迷,mamicode.com
首页 > 数据库 > 详细

Mysql 查找表中的前n大元素

时间:2018-03-22 12:33:48      阅读:365      评论:0      收藏:0      [点我收藏+]

标签:employee   net   center   www.   tps   www   tab   blog   art   

转载注明出处: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大元素

标签:employee   net   center   www.   tps   www   tab   blog   art   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!