首页 > 解决方案 > SQL查询查找最高工资

问题描述

我有一张这样的桌子

----------------------
| ID | Name | Salary |
| -- | ---  | ---    |
| 1  |  A   | 1000   |
| 2  |  B   | 4000   |
| 3  |  C   | 5000   |
| 4  |  B   |  600   |
| 5  |  C   | 2000   |
| 6  |  A   | 5000   |
| 7  |  B   | 4000   |
----------------------

而我想查询全表的最高工资和每个学生的最高工资。我可以写两个查询,例如,

>> SELECT MAX(Salary) FROM TABLE
>> SELECT NAME, MAX(SALARY) FROM TABLE GROUP BY NAME

现在,我想在一个查询中做同样的事情而不使用两个查询。我该如何接近?

标签: mysqlsql

解决方案


ROLLUP 可用于给出额外的行作为“摘要”,因此给出整体 MAX 值......

  SELECT name, MAX(salary)
    FROM TABLE
GROUP BY name
    WITH ROLLUP
ORDER BY GROUPING(name) DESC,
         name

哪个会产生...

| Name | Salary |
| ---  | ---    |
| NULL | 5000   |
|  A   | 5000   |
|  B   | 4000   |
|  C   | 5000   |

推荐阅读