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/

  • 相关阅读:
    安全
    请求
    使用 Fetch
    安全
    script
    PWA
    link(外部资源关系)
    base(根URL)
    缓存
    IndexedDB基本概念
  • 原文地址:https://www.cnblogs.com/liangyongrui/p/8622593.html
Copyright © 2011-2022 走看看