首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL查询以查找最高薪资

SQL查询以查找最高薪资
EN

Stack Overflow用户
提问于 2021-08-03 14:21:08
回答 3查看 103关注 0票数 1

我有一张这样的桌子

代码语言:javascript
复制
----------------------
| ID | Name | Salary |
| -- | ---  | ---    |
| 1  |  A   | 1000   |
| 2  |  B   | 4000   |
| 3  |  C   | 5000   |
| 4  |  B   |  600   |
| 5  |  C   | 2000   |
| 6  |  A   | 5000   |
| 7  |  B   | 4000   |
----------------------

我想查询整个表中的最高工资和每个学生的最高工资。我可以写两个查询,

代码语言:javascript
复制
>> SELECT MAX(Salary) FROM TABLE
>> SELECT NAME, MAX(SALARY) FROM TABLE GROUP BY NAME

现在,我希望在不使用两个查询的情况下,在单个查询中执行相同的操作。我该怎么接近?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-08-03 14:31:40

ROLLUP可以用来给出一个额外的行作为一个‘摘要’,所以给出整个最大值.

代码语言:javascript
复制
  SELECT name, MAX(salary)
    FROM TABLE
GROUP BY name
    WITH ROLLUP
ORDER BY GROUPING(name) DESC,
         name

就会屈服..。

代码语言:javascript
复制
| Name | Salary |
| ---  | ---    |
| NULL | 5000   |
|  A   | 5000   |
|  B   | 4000   |
|  C   | 5000   |
票数 2
EN

Stack Overflow用户

发布于 2021-08-03 14:26:35

有一种方法:

代码语言:javascript
复制
SELECT NAME, MAX(SALARY) , max(max(salary)) over() 
FROM TABLE GROUP BY NAME
票数 1
EN

Stack Overflow用户

发布于 2021-08-03 14:41:17

您可以使用GROUP BYName字段进行分组,在Salary字段上使用ORDER BY ... DESC来获得最大值。

代码语言:javascript
复制
SELECT PrimaryField, MaxField
FROM MyTable
GROUP By PrimaryField
ORDER BY MaxField DESC;

解释:

  • SELECT PrimaryField, MaxField --我们want.
  • FROM MyTable的字段--我们要作为主field.
  • ORDER BY MaxField DESC;处理的表--因为我们按PrimaryField分组,所以每个PrimaryField唯一值只有一行。如果我们订购MaxField,我们可以根据需要得到它的最小或最大。

特别是对你来说:

代码语言:javascript
复制
SELECT Name, Salary
FROM TABLE
GROUP By Name
ORDER BY Salary DESC;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68637799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档