您当前的位置: 首页 >  ar

Dream丶Killer

暂无认证

  • 0浏览

    0关注

    188博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

(简单)SQL练习20:查找员工编号emp_now为10001其自入职以来的薪水salary涨幅值growth

Dream丶Killer 发布时间:2021-02-01 21:20:57 ,浏览量:0

SQL练习20:查找员工编号emp_now为10001其自入职以来的薪水salary涨幅值growth
      • 题目描述
      • 考察知识点
      • 解题思路

题目描述

查找员工编号 emp_no 为 10001 其自入职以来的薪水 salary 涨幅(总共涨了多少) growth (可能有多次涨薪,没有降薪)。

CREATE TABLE `salaries` (
`emp_no` int(11) NOT NULL,
`salary` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`from_date`));
考察知识点

MAX()MIN(),子查询。

解题思路

1️⃣ 按照本题的要求没有降薪的话,那么就保证了他最后一次薪水必定是最高薪水,这样根据条件查询即可。

SELECT (MAX(salary) - MIN(salary)) as growth
FROM salaries
WHERE emp_no = '10001'

2️⃣ 这种方式更加严谨,因为实际情况下,可能 MAX() 获得的薪水并不是员工最后发放的薪水,即可能是降薪后才发的,那就可以根据日期来排序获取最早日期和最晚日期的薪水相减就可以得到涨幅。

SELECT ((SELECT salary FROM salaries
WHERE emp_no = 10001 ORDER BY from_date  DESC LIMIT 0, 1) -
(SELECT salary from salaries
WHERE emp_no = 10001 ORDER BY from_date LIMIT 0, 1)) AS growth;

题目来源:牛客网-SQL数据库实战题

✅ 每日打卡,❤ 点个赞再走吧!!!❤ 在这里插入图片描述 后续会继续分享 Mysql 方面的文章,如果感兴趣的话可以点个关注不迷路哦~。

关注
打赏
1655344294
查看更多评论
立即登录/注册

微信扫码登录

0.6416s