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

举报
Python新视野 发表于 2021/09/09 22:52:22 2021/09/09
【摘要】 SQL练习20:查找员工编号emp_now为10001其自入职以来的薪水salary涨幅值growth 题目描述考察知识点解题思路 题目描述 查找员工编号 emp_no 为 10...

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`));

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

考察知识点

MAX()MIN()子查询


解题思路

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

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

  
 
  • 1
  • 2
  • 3

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;

  
 
  • 1
  • 2
  • 3
  • 4

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

每日打卡,❤ 点个赞再走吧!!!❤

在这里插入图片描述
后续会继续分享 Mysql 方面的文章,如果感兴趣的话可以点个关注不迷路哦~。

文章来源: blog.csdn.net,作者:Dream丶Killer,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq_43965708/article/details/113529802

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。