跳转至

2853. 最高薪水差异 🔒

题目描述

表:Salaries

+-------------+---------+ 
| Column Name | Type    | 
+-------------+---------+ 
| emp_name    | varchar | 
| department  | varchar | 
| salary      | int     |
+-------------+---------+
该表的主键(具有唯一值的列的组合)是 (emp_name, department)。 
该表的每一行包含 emp_name、department 和 salary。工程部门和市场部门至少会有一条记录。

编写一个解决方案,计算 市场部门 和 工程部门 中 最高 工资之间的差异。输出工资的绝对差异。

返回结果表。

返回结果格式如下示例所示。

 

示例 1:

输入:
Salaries table:
+----------+-------------+--------+
| emp_name | department  | salary |
+----------+-------------+--------+
| Kathy    | Engineering | 50000  |
| Roy      | Marketing   | 30000  |
| Charles  | Engineering | 45000  |
| Jack     | Engineering | 85000  | 
| Benjamin | Marketing   | 34000  |
| Anthony  | Marketing   | 42000  |
| Edward   | Engineering | 102000 |
| Terry    | Engineering | 44000  |
| Evelyn   | Marketing   | 53000  |
| Arthur   | Engineering | 32000  |
+----------+-------------+--------+
输出:
+-------------------+
| salary_difference | 
+-------------------+
| 49000             | 
+-------------------+
解释:
- 工程部门和市场部门的最高工资分别为 102,000 和 53,000,因此绝对差异为 49,000。

解法

方法一:GROUP BY 分组

我们可以先分别计算出每个部门的最高工资,然后再计算两个最高工资的差值。

1
2
3
4
5
6
7
8
# Write your MySQL query statement below
SELECT MAX(s) - MIN(s) AS salary_difference
FROM
    (
        SELECT MAX(salary) AS s
        FROM Salaries
        GROUP BY department
    ) AS t;

评论