当前位置: 首页 > news >正文

力扣-部门工资前三高的所有员工

大家好,我是空空star,本篇带大家了解一道稍微复杂的力扣sql练习题。

文章目录

  • 前言
  • 一、题目:185. 部门工资前三高的所有员工
  • 二、解题
    • 1.正确示范①
      • 提交SQL
      • 运行结果
    • 2.正确示范②
      • 提交SQL
      • 运行结果
    • 3.其他
  • 总结


前言

上一篇带大家练习了部门工资最高的员工,如果大家掌握了的话,本篇这道题就很容易了。


一、题目:185. 部门工资前三高的所有员工

表: Employee

+--------------+---------+
| Column Name  | Type    |
+--------------+---------+
| id           | int     |
| name         | varchar |
| salary       | int     |
| departmentId | int     |
+--------------+---------+
Id是该表的主键列。
departmentId是Department表中ID的外键。
该表的每一行都表示员工的ID、姓名和工资。它还包含了他们部门的ID。

表: Department

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| id          | int     |
| name        | varchar |
+-------------+---------+
Id是该表的主键列。
该表的每一行表示部门ID和部门名。

公司的主管们感兴趣的是公司每个部门中谁赚的钱最多。一个部门的 高收入者 是指一个员工的工资在该部门的 不同 工资中 排名前三 。

编写一个SQL查询,找出每个部门中 收入高的员工 。

以 任意顺序 返回结果表。

查询结果格式如下所示。

二、解题

1.正确示范①

提交SQL

select u2.name Department,
u1.name Employee,
u1.salary Salary
from(select id,name,salary,departmentId,dense_rank() over(partition by departmentId order by salary desc ) colfrom Employee
) u1
left join Department u2 
on u1.departmentId=u2.id
where col<=3
order by u1.id

运行结果

2.正确示范②

提交SQL

select d.name Department,
u1.name Employee,
u1.salary Salary
from Employee u1
join Department d
on u1.departmentId=d.id
where 3 >
(select count(distinct u2.Salary)from Employee u2where u2.Salary > u1.Salaryand u1.departmentId=u2.departmentId
)

运行结果

3.其他


总结

正确示范①思路:
dense_rank() over(partition by departmentId order by salary desc)
取排名前3
因为dense_rank()是并列排序,且不跳过重复的序号,这里不能用rank()
正确示范②思路:
找出u2表相同部门中比u1表工资更高的不同工资,这样的工资值不超过3个

http://www.lryc.cn/news/13504.html

相关文章:

  • 山东大学教授团畅谈ChatGPT革命座谈会,探讨ChatGPT发展趋势
  • 开发自己私有chatGPT(五)训练微调openai模型
  • 【数据结构】二叉树-堆实现及其堆的应用(堆排序topK问题)
  • ubuntu Repo 安装
  • JAVA:选择排序算法及其编写
  • 【Linux】——基础开发工具和vim编辑器的基本使用方法
  • R语言部分题解
  • 水文监测场景的数据通信规约解析和落地实践
  • 【数据结构】时间复杂度和空间复杂度
  • 从发现SQL注入到ssh连接
  • SAP ABAP
  • C/C++每日一练(20230219)
  • 【NestJS】模块
  • 隐私计算头条周刊(2.13-2.19)
  • 【STM32笔记】低功耗模式配置及避坑汇总
  • DFN: Dynamic Filter Networks-动态卷积网络
  • 面试官:你是怎样理解Fiber的
  • 【C++的OpenCV】第一课-opencv的介绍和安装(Linux环境下)
  • k8s安装tekton,编写task
  • K_A12_014 基于STM32等单片机驱动S12SD紫外线传感器模块 串口与OLED0.96双显示
  • 还真不错,今天 Chatgpt 教会我如何开发一款小工具开发(Python 代码实现)
  • Boom 3D最新版本下载电脑音频增强应用工具
  • redis-如何保证数据库和缓存双写一致性?
  • 系列二、核心概念运行流程
  • 恢复 iPhone 和 iPad 数据的 10 种简单工具
  • 经理与员工工资关系-课后程序(JAVA基础案例教程-黑马程序员编著-第四章-课后作业)
  • Micropython ESP32配置与烧录版本
  • java面试题-并发关键字(Synchronized,volatile,final)
  • 【笔试强训】Day_02
  • DepGraph:适用任何结构的剪枝