Employees Earning More Than Their Managers Leetcode SQL

本文介绍了一种使用 SQL 自连接的方法来找出那些薪资比他们的直接上级还要高的员工。通过展示具体的例子,读者可以了解如何构造 SQL 查询来完成这一任务。
The Employee table holds all employees including their managers. Every employee has an Id, and there is also a column for the manager Id.


+----+-------+--------+-----------+
| Id | Name  | Salary | ManagerId |
+----+-------+--------+-----------+
| 1  | Joe   | 70000  | 3         |
| 2  | Henry | 80000  | 4         |
| 3  | Sam   | 60000  | NULL      |
| 4  | Max   | 90000  | NULL      |
+----+-------+--------+-----------+
Given the Employee table, write a SQL query that finds out employees who earn more than their managers. For the above table, Joe is the only employee who earns more than his manager.


+----------+
| Employee |
+----------+
| Joe      |

+----------+

这题用的是self join 的方法 选出 ManagerID 再将Salary作为比较条件即可得到答案。

# Write your MySQL query statement below
SELECT A.Name From Employee A,Employee B
WHERE A.ManagerId=B.Id and A.Salary>B.Salary


### 高级SQL `CASE`语句的使用方法及实例 #### 使用场景 在SQL查询中,`CASE`表达式用于实现条件逻辑判断。这使得可以根据不同情况返回不同的值,在数据处理和分析过程中非常有用。 #### 基本语法结构 `CASE`有两种基本形式:简单`CASE`(基于相等比较)以及搜索`CASE`(支持更复杂的布尔表达式)。下面分别介绍这两种方式并给出具体例子[^1]。 #### 简单CASE表达式的应用 当只需要匹配特定值时可以采用这种方式: ```sql SELECT product_name, CASE category_id WHEN 1 THEN 'Electronics' WHEN 2 THEN 'Clothing' ELSE 'Other' END AS Category_Name FROM products; ``` 此查询将根据`category_id`字段的内容为每条记录分配一个新的类别名称。 #### 搜索CASE表达式的灵活性 如果要执行更为复杂的选择,则应考虑使用带有条件子句的形式: ```sql SELECT employee_name, CASE WHEN salary > 80000 THEN 'High Earner' WHEN salary BETWEEN 50000 AND 80000 THEN 'Moderate Earner' ELSE 'Low Earner' END as Earning_Level FROM employees; ``` 这段代码按照员工薪资水平分类,并赋予相应的标签。 #### 结合聚合函数的应用案例 还可以把`CASE`与其他功能结合起来以获得更加精细的结果集。比如计算各部门内高收入者的平均工资: ```sql SELECT department, AVG( CASE WHEN salary >= 90000 THEN salary ELSE NULL END) AS avg_high_salary FROM staff GROUP BY department; ``` 这里利用了`AVG()`忽略NULL的特点来只统计符合条件的数据项。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值