zoukankan      html  css  js  c++  java
  • Mysql 查找表中的多组前n大元素

    博客已搬家,更多内容查看https://liangyongrui.github.io/

    Mysql 查找表中的多组前n大元素

    如果时单组很简单,只需要排序后去前n个就行了,但是多组排序似乎就不是那么好做了。

    解法:

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

    假设有这样的一个表 Employee

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

    找出每个部门薪水的前三名

    SELECT
      e1.DepartmentId department,
      e1.Name         Employee,
      e1.Salary
    FROM
      Employee e1
    WHERE
      3 > (SELECT COUNT(DISTINCT e2.Salary)
           FROM
             Employee e2
           WHERE
             e2.Salary > e1.Salary
             AND e1.DepartmentId = e2.DepartmentId
      );
    

    结果为

    Department Employee Salary
    1 Joe 70000
    2 Henry 80000
    2 Sam 60000
    1 Max 90000
    1 Randy 85000

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

  • 相关阅读:
    List
    迭代器Iterator
    Collection方法
    Collection体系
    Date DateFormat SimpleDateFormat
    Calendar
    BigInteger & BigDecimal
    System类
    正则2 -- pattern和Matcher
    关于团队组成
  • 原文地址:https://www.cnblogs.com/liangyongrui/p/8622593.html
Copyright © 2011-2022 走看看