sql—发现mysql的最大增长点

omjgkv6w  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(284)

我在做一个练习,我要找出哪个员工在公司工作期间工资增长幅度最大。这是我需要用的两张table。

CREATE TABLE employees (
emp_no      INT             NOT NULL,
birth_date  DATE            NOT NULL,
first_name  VARCHAR(14)     NOT NULL,
last_name   VARCHAR(16)     NOT NULL,
gender      ENUM ('M','F')  NOT NULL,    
hire_date   DATE            NOT NULL,
PRIMARY KEY (emp_no));

CREATE TABLE salaries (
emp_no      INT             NOT NULL,
salary      INT             NOT NULL,
from_date   DATE            NOT NULL,
to_date     DATE            NOT NULL,

# FOREIGN KEY (emp_no) REFERENCES employees (emp_no) ON DELETE CASCADE,

PRIMARY KEY (emp_no, from_date));

我使用“mysql8.0命令行客户端-unicode”来执行下面显示的查询:

SELECT first_name, last_name, MAX(salary)-MIN(salary) AS 'Max' 
FROM employees JOIN salaries using(emp_no)
GROUP BY emp_no
ORDER BY Max DESC
LIMIT 1;

这个查询能确保我得到正确的结果吗?有没有更快的方法?
编辑:添加分组依据

gg58donl

gg58donl1#

这太长了,不能发表评论。
“加薪幅度最大”模棱两可。你发现了最高和最低工资之间最大的差别。这是对这个问题的一个非常合理的解释,但还有其他解释。
例如,有人可能从高薪开始,然后被降职,所以他们的最高工资是第一位的。这就提出了另一种合理的解释:最近一次工资与第一次工资之差的绝对值。在mysql中计算起来有点困难。
另一种解释是增长幅度最大。因此,从5万美元增加到6万美元将被认为比从50万美元增加到55万美元“更大”,因为比例更大。当然,这可以应用于最大/最小或最新/第一。
类似的问题也可以有一个答案,关于工资每年的增长。
所以,这个问题是模棱两可的,但是您有一个完全合理的解释,并且您的查询实现了这一点。我不会给专栏打电话 max ,因为它被称为 diff .

相关问题