如何选择每个部门的最高工资,包括赚取该工资的员工[关闭]

2024-03-24

给定一个表Employees

+-------+--------+-----------+------+-----------+------+------+--------+
| EMPNO | ENAME  |    JOB    | MGR  | HIREDATE  | SAL  | COMM | DEPTNO |
+-------+--------+-----------+------+-----------+------+------+--------+
|  7369 | SMITH  | CLERK     | 7902 | 17-Dec-80 |  800 |      |     20 |
|  7499 | ALLEN  | SALESMAN  | 7698 | 20-Feb-81 | 1600 |  300 |     30 |
|  7521 | WARD   | SALESMAN  | 7698 | 22-Feb-81 | 1250 |  500 |     30 |
|  7566 | JONES  | MANAGER   | 7839 | 02-Apr-81 | 2975 |      |     20 |
|  7654 | MARTIN | SALESMAN  | 7698 | 28-Sep-81 | 1250 | 1400 |     30 |
|  7698 | BLAKE  | MANAGER   | 7839 | 01-May-81 | 2850 |      |     30 |
|  7782 | CLARK  | MANAGER   | 7839 | 09-Jun-81 | 2450 |      |     10 |
|  7788 | SCOTT  | ANALYST   | 7566 | 19-Apr-87 | 3000 |      |     20 |
|  7839 | KING   | PRESIDENT | null | 17-Nov-81 | 5000 |      |     10 |
|  7844 | TURNER | SALESMAN  | 7698 | 08-Sep-81 | 1500 |    0 |     30 |
|  7876 | ADAMS  | CLERK     | 7788 | 23-May-87 | 1100 |      |     20 |
|  7900 | JAMES  | CLERK     | 7698 | 03-Dec-81 |  950 |      |     30 |
|  7902 | FORD   | ANALYST   | 7566 | 03-Dec-81 | 3000 |      |     20 |
|  7934 | MILLER | CLERK     | 7782 | 23-Jan-82 | 1300 |      |     10 |
+-------+--------+-----------+------+-----------+------+------+--------+

还有另一张桌子Departments

+--------+------------+----------+
| DEPTNO |   DNAME    |   LOC    |
+--------+------------+----------+
|     10 | ACCOUNTING | NEW YORK |
|     20 | RESEARCH   | DALLAS   |
|     30 | SALES      | CHICAGO  |
|     40 | OPERATIONS | BOSTON   |
+--------+------------+----------+

如何查询各部门的最高工资?

输出格式行是:

DEPTNO,ENAME,DNAME,SAL,LOC

您可以使用子查询来获取max(salary)对于每个部门:

select de.deptno,
  e.ename,
  de.dname,
  e.sal,
  de.loc
from employees e
inner join
(
  select max(e.sal) MaxSalary, d.deptno, d.loc, d.dname
  from employees e
  inner join departments d
     on e.deptno = d.deptno
  group by d.deptno, d.loc, d.dname
) de
  on e.sal = de.MaxSalary
  and e.deptno = de.deptno
order by de.deptno

See SQL 摆弄演示 http://www.sqlfiddle.com/#!3/78f2b/16。您会注意到这会返回 2 行deptno=20因为有两名员工的工资相同。

如果您使用的数据库具有窗口函数,那么您将需要使用dense_rank()那么你将返回每个部门中工资最高的所有员工:

select d.deptno, e.ename, d.dname, e.sal, d.loc
from 
(
  select e.ename,
    e.sal, 
    e.deptno,
    dense_rank() over (partition by deptno order by sal desc) as salRank
  from employees e
) e 
inner join departments d
  on e.deptno = d.deptno
where salRank = 1;

See SQL 摆弄演示 http://www.sqlfiddle.com/#!3/78f2b/22.

两个版本的结果都是:

| DEPTNO | ENAME |      DNAME |  SAL |      LOC |
-------------------------------------------------
|     10 |  KING | ACCOUNTING | 5000 | NEW YORK |
|     20 | SCOTT |   RESEARCH | 3000 |   DALLAS |
|     20 |  FORD |   RESEARCH | 3000 |   DALLAS |
|     30 | BLAKE |      SALES | 2850 |  CHICAGO |
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何选择每个部门的最高工资,包括赚取该工资的员工[关闭] 的相关文章

  • 如何使用内联 SQL 参数化 IN 语句的集合? [复制]

    这个问题在这里已经有答案了 可能的重复 参数化 SQL IN 子句 https stackoverflow com questions 337704 parameterizing a sql in clause 你好 我有一个查询 如下所示
  • MYSQL:SQL查询获取自增字段的值

    我有一张桌子 主键是id及其自动递增 现在 当我插入新记录时 我需要获取更新记录的 id 我怎样才能做到这一点 如果我使用查询 select max id from table name 执行后我可以获得id 但我能确定它是刚刚插入的记录的
  • 选定的非聚合值必须是关联组的一部分

    我在 Teradata 中有两个表 Table A 和 Table B 它们之间是 LEFT JOIN 之后我将创建 SELECT 语句 其中包含两个表中的属性 SELECT attribute 1 attribute 2 attribut
  • 返回年份数组作为年份范围

    我正在尝试查询一个包含以下内容的表character varying 年份列 并将这些年份作为逗号分隔的年份范围字符串返回 年份范围将由数组中存在的连续年份确定 不连续的年份 年份范围应以逗号分隔 数据类型的原因是character var
  • 如何在sql server中对行号进行内连接

    SQL Server 2008 两张表 表A有以下数据 RowA RowB RowC RowD 表B有以下数据 Row4 Row3 Row2 Row1 我想得到以下输出 RowA Row1 RowB Row2 RowC Row3 RowD
  • 交换 ms-sql 表

    我想以尽可能最好的方式交换到桌子 我有一个 IpToCountry 表 并根据导入的外部 CSV 文件每周创建一个新表 我发现进行切换的最快方法是执行以下操作 sp rename IpToCountry IpToCountryOld go
  • 在 MySQL 中插入时检查并防止相似字符串

    简要信息 我有3张桌子 Set id name SetItem set id item id position TempSet id 我有一个函数可以生成新的随机组合Item桌子 基本上 总是在成功生成之后 我在中创建一个新行Set表 获取
  • 什么会导致 Oracle ROWID 更改?

    AFAIK Oracle 中的 ROWID 表示相应数据文件中记录的物理位置 在什么情况下记录的ROWID可能会改变 我所知道的一个是分区表上的更新 它将记录 移动 到另一个分区 还有其他情况吗 我们的大多数数据库都是 Oracle 10
  • db2中如何删除所有非数字字母

    我在 DATA 列 varchar 中有一些数据 如下所示 Nowshak 7 485 m Maja e Korabit Golem Korab 2 764 m Tahat 3 003 m Morro de Moco 2 620 m Cer
  • 更新 SQLAlchemy 中的特定行

    我将 SQLAlchemy 与 python 一起使用 我想更新表中等于此查询的特定行 UPDATE User SET name user WHERE id 3 我通过 sql alchemy 编写了这段代码 但它不起作用 session
  • 在 azure Devops 管道中部署 SQL 时遇到错误

    我在 azure Devops 的发布管道中使用 sql DACPAC 类型的部署 但出现以下错误 我对 SQL 不了解 有什么建议吗 Publishing to database database name on server Serve
  • SQL Server中的列级与表级约束?

    A 列级 GO CREATE TABLE Products ProductID INT CONSTRAINT pk products pid PRIMARY KEY ProductName VARCHAR 25 GO b 表层 CREATE
  • 将图像列保存到 SQL Server 2000 中的文件

    我在 SQL Server 2000 中有一个包含图像列的表 我需要将图像数据保存到文件系统上的文件中 在 SQL Server 2005 中 我可以使用 ADODB Stream 对象进行文件 I O 但这在 SQL Server 200
  • 如何比较行内的重叠值?

    我似乎对这个 SQL 查询有问题 SELECT FROM appts WHERE timeStart gt timeStart AND timeEnd lt timeEnd AND dayappt boatdate 时间格式为军用时间 物流
  • 删除重复的行并需要在mysql中保留所有行中的一个[重复]

    这个问题在这里已经有答案了 我想删除基于两列的重复行 但需要保留所有行 1 行 重复行可以多于两行 例如 ID NAME PHONE 1 NIL 1234 2 NIL 1234 3 NIL 1234 4 MES 5989 我想从上面 3 行
  • Magento 设置脚本中的 ALTER TABLE 不使用 SQL

    乔纳森 戴 https stackoverflow com users 336905 jonathan day says 更新不应采用以下形式 SQL命令 我没遇到过 任何 DDL 或 DML 语句不能 通过 Magento 的配置执行 结
  • 合并sql中的列

    我正在使用 SQL Server 2017 有一个存储过程 其中我有一个带有连接的简单选择 例如 SELECT p legacyKey AS JobNumber p Name AS JobName G Label AS DesignStat
  • REGEXP_REPLACE - 仅当包含在 () 中时才从字符串中删除逗号

    我在 oracle 论坛网站找到了一个例子 输入字符串 a b c x y z a xx yy zz x WITH t AS SELECT a b c x y z a xx yy zz x col1 FROM dual SELECT t c
  • 如何将事物的组合映射到关系数据库?

    我有一个表 其记录代表某些对象 为了简单起见 我假设该表只有一列 这是唯一的ObjectId 现在我需要一种方法来存储该表中的对象组合 组合必须是唯一的 但可以是任意长度 例如 如果我有ObjectIds 1 2 3 4 我想存储以下组合
  • 在 SQL 中按键组对行进行顺序编号?

    SQL中有没有办法按顺序添加行号按关键组 假设一个表包含任意 CODE NAME 元组 示例表 CODE NAME A Apple A Angel A Arizona B Bravo C Charlie C Cat D Dog D Dopp

随机推荐

  • Heroku推送应用程序问题

    我安装了 Heroku 并设置了一个帐户 但由于某种原因 每当我尝试将应用程序推送到网站时 都会收到此错误 git push heroku master No such app as first app fatal The remote e
  • 幕后花絮:核心数据日期以 31 年偏移存储?

    我知道 里面没有用户可维修的部件 但我很好奇 在 Core Data sqlite3 DB 中 我似乎可以在 ZDATE 中获取日期 如下所示 sqlite gt select datetime ZDATE unixepoch 31 yea
  • iOS 金属。为什么简单地改变 colorPixelFormat 就会产生更明亮的图像?

    在 iOS 上的 Metal 中 默认的 colorPixelFormat 是bgra8Unorm 当我将格式更改为rgba16Float所有图像都变亮 为什么 一个例子 Artwork MTKView有格式bgra8Unorm 纹理映射四
  • 正则表达式 [A-Za-z] 似乎不包含字母 W 和 w

    由于某种原因 我不知道为什么 也许我的系统或我的大脑有些不对劲 正则表达式 A Z 似乎无法识别字母 W 和 a z 似乎不认识字母 w 例子 for x in A a B b C c D d E e F f G g H h I i J j
  • 当 std::cerr 上打印某些内容时设置 gdb 断点

    我使用 qt creator 作为 gdb 的 IDE 和前端 当对 std cerr 变量调用operator 如何在 std cerr 设置断点 你的问题没有意义 std cerr是一个全球性的variable 您只能在函数上设置断点
  • 所选 bean 不在同一模块或企业应用程序中

    只是瞎猜 但我是否需要本地接口来调用远程无状态 EJB 当我尝试通过 Netbeans 远程调用 bean 时 Netbeans 不允许对此 Bean 进行远程调用或任何调用 为什么不 尝试手动完成 如下 jndi是什么global部署在
  • MSDeploy setParameter 不起作用

    我们正在尝试将 构建一次 随处部署 模型集成到我们的构建 部署系统中 MSDeploy 在这方面发挥了奇迹 通过 CRC 校验和比较和 大部分情况下 当使用参数化根据我们部署到的环境来更改应用程序 web configs 时 它也同样有效
  • 如何在 DataFrame 中选择两个值之间的行

    我正在尝试修改 DataFramedf仅包含列中的值的行closing price介于 99 和 101 之间 并尝试使用下面的代码来执行此操作 但是 我收到错误 ValueError 系列的真值不明确 使用 a empty a bool
  • 如何使用 API 网关调用 sagemaker 推理端点

    我正在尝试使用 AWS Integration 从 api 网关调用 sagemaker 推理端点 我不想在 API 网关和 sagemaker 运行时之间使用 lamdba 我跟着这个doc https docs aws amazon c
  • Adobe AIR 执行程序

    我想按下 Adob e AIR 应用程序中的按钮并执行某些已安装的程序 例如 我有一个名为 Start Winamp 的按钮 当按下这个按钮时 它应该直接启动 Winamp exe 我不想执行一些命令行 我只想启动一个 exe 或者 是同一
  • CSS - 将文本添加到样式表中的样式

    我还没有找到任何文档 所以我认为这是不可行的 但值得一问 我可以在样式表内指定样式内的实际文本吗 我有几个地方在相同的 div 位置使用相同的文本 我没有使用 javascript 或在 div 中重新输入相同的文本 而是在考虑样式是否可以
  • Json.NET - 防止重新序列化已经序列化的属性[重复]

    这个问题已经存在了 在 ASP NET Web API 应用程序中 我正在使用的一些模型包含一块仅在客户端有用的临时 JSON 在服务器上 它只是作为字符串进出关系数据库 性能是关键 在服务器端处理 JSON 字符串似乎根本没有意义 所以在
  • 无法在不指定完整路径的情况下运行 python 脚本

    您好 我正在尝试直接从终端运行 python 脚本 为此 我已将包含代码的目录添加到我的环境 PATH 变量中 但是 当我指定完整路径时我可以运行 但当我只调用脚本时则不能运行 base DS home user abc my codes
  • 侦听器拒绝连接并出现以下错误:ORA-12505,TNS:侦听器当前不知道连接描述符中给出的 SID

    从昨天开始我的数据库已经工作一年多了 突然间 我无法再连接 我得到的错误是 Status Failure Test failed Listener refused the connection with the following erro
  • .NET 委托是否用于事件?

    我有点困惑 我知道委托就像函数指针 它们用于将函数作为参数传递到方法中 这如何融入事件模型 Calling myButton OnClick new 当事件发生时 内部是否只是将方法 函数作为参数传递 并且所有订阅者都收到有关该事件的通知
  • 有没有简单的方法可以在目标 c 中对一位数字的浮点数进行四舍五入?

    是的 你是对的 当然 这是一个重复的问题 在标记我的问题之前 请继续阅读下面的内容 我想四舍五入一个浮点值 即 56 6748939 to 56 7 56 45678 to 56 5 56 234589 to 56 2 实际上它可以是任意数
  • onBeforeRequest 侦听器中的异步调用替代方案

    对于我的 Chrome 扩展程序 我希望具有阻止请求功能 我有一个很大的域列表 10000 我正在考虑使用 IndexedDb 来存储域列表 但据我现在了解 不可能进行异步调用并在请求处理程序中返回结果 我最初的计划是 function r
  • iframe 被认为是“不好的做法”吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在此过程中 我发现使用 iframe 是 不好的做法 这是真的 使用它们的优点 缺点是什么 与所有技术一样 它也有其优点和缺点 如果您使用 if
  • 向 ExpandoObject 添加与字符串同名的属性

    有没有办法向 ExpandoObject 添加与字符串值同名的属性 例如 如果我有 string propName ProductNumber dynamic obj new System Dynamic ExpandoObject 我可以
  • 如何选择每个部门的最高工资,包括赚取该工资的员工[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 给定一个表Employees EMP