文章目录

  • 17、获取当前(to_date='9999-01-01')薪水第二多的员工的emp_no以及其对应的薪水salary
  • 18、查找当前薪水排名第二多的员工编号。。你可以不使用order by完成吗
  • 19、查找所有员工的last_name和first_name以及对应的。。
  • 20、查找员工编号emp_no为10001的最高工资
  • 21、查找所有员工自入职以来的薪水涨幅情况
  • 22、统计各个部门的工资记录数
  • 23、对所有员工的当前薪水按照salary进行按照1-N的排名
  • 24、获取所有非manager员工当前的薪水情况

17、获取当前(to_date=‘9999-01-01’)薪水第二多的员工的emp_no以及其对应的薪水salary

题目描述
获取当前(to_date=‘9999-01-01’)薪水第二多的员工的emp_no以及其对应的薪水salary

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

注意顺序:order by 属性名 desc

select emp_no,salary
from salaries
where salaries.to_date='9999-01-01'
order by salary desc
limit 1,1

18、查找当前薪水排名第二多的员工编号。。你可以不使用order by完成吗

查找当前薪水(to_date=‘9999-01-01’)排名第二多的员工编号emp_no、薪水salary、last_name以及first_name,你可以不使用order by完成吗

CREATE TABLE `employees` (
`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
`gender` char(1) NOT NULL,
`hire_date` date NOT NULL,
PRIMARY KEY (`emp_no`));
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`));
select salaries.emp_no,Max(salaries.salary) as salary,employees.last_name,employees.first_name
from salaries,employees
where salaries.to_date = '9999-01-01'and salaries.emp_no = employees.emp_noand salaries.salary NOT IN (select Max(salary)from salarieswhere to_date = '9999-01-01')

19、查找所有员工的last_name和first_name以及对应的。。

查找所有员工的last_name和first_name以及对应的dept_name,也包括暂时没有分配部门的员工

CREATE TABLE `departments` (
`dept_no` char(4) NOT NULL,
`dept_name` varchar(40) NOT NULL,
PRIMARY KEY (`dept_no`));CREATE TABLE `dept_emp` (
`emp_no` int(11) NOT NULL,
`dept_no` char(4) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`dept_no`));CREATE TABLE `employees` (
`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
`gender` char(1) NOT NULL,
`hire_date` date NOT NULL,
PRIMARY KEY (`emp_no`));如插入:
INSERT INTO departments VALUES('d001','Marketing');
INSERT INTO departments VALUES('d002','Finance');
INSERT INTO departments VALUES('d003','Human Resources');
INSERT INTO departments VALUES('d004','Production');
INSERT INTO departments VALUES('d005','Development');
INSERT INTO departments VALUES('d006','Quality Management');INSERT INTO dept_emp VALUES(10001,'d001','1986-06-26','9999-01-01');

注意:包括没有分配的。也就是说有null,用左连接
格式:left join 表名 on 条件

select e.last_name, e.first_name, dm.dept_name
from employees as e
left join dept_emp as de
on e.emp_no = de.emp_no
left join departments as dm
on de.dept_no = dm.dept_no

20、查找员工编号emp_no为10001的最高工资

题目描述
查找员工编号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`));
select Max(salaries.salary)-Min(salaries.salary) as growth
from salaries
where emp_no=10001

21、查找所有员工自入职以来的薪水涨幅情况

题目描述

查找所有员工自入职以来的薪水涨幅情况,给出员工编号emp_no以及其对应的薪水涨幅growth,并按照growth进行升序
(注:可能有employees表和salaries表里存在记录的员工,有对应的员工编号和涨薪记录,但是已经离职了,离职的员工salaries表的最新的to_date!=‘9999-01-01’,这样的数据不显示在查找结果里面)

CREATE TABLE `employees` (
`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
`gender` char(1) NOT NULL,
`hire_date` date NOT NULL, --  '入职时间'
PRIMARY KEY (`emp_no`));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`));
select xian.emp_no,(xian.salary-yiqian.salary) as growth
from (select e.emp_no,s.salaryfrom employees as eleft join salaries as son e.emp_no=s.emp_nowhere s.to_date='9999-01-01') as xian
join (select e.emp_no,s.salaryfrom employees as eleft join salaries as son e.emp_no=s.emp_nowhere e.hire_date=s.from_date) as yiqian
on xian.emp_no=yiqian.emp_no
order by growth

22、统计各个部门的工资记录数

统计各个部门的工资记录数,给出部门编码dept_no、部门名称dept_name以及部门在salaries表里面有多少条记录sum,按照dept_no升序排序

CREATE TABLE `departments` (
`dept_no` char(4) NOT NULL,
`dept_name` varchar(40) NOT NULL,
PRIMARY KEY (`dept_no`));
CREATE TABLE `dept_emp` (
`emp_no` int(11) NOT NULL,
`dept_no` char(4) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`dept_no`));
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`));
select dm.dept_no,dm.dept_name,count(sa.salary) as sum
from departments as dm,dept_emp as de,salaries as sa
where dm.dept_no = de.dept_noand de.emp_no = sa.emp_no
group by dept_name
order by dept_no

23、对所有员工的当前薪水按照salary进行按照1-N的排名

!!!!

SELECT emp_no, salary, DENSE_RANK() OVER(ORDER BY salary DESC) AS t_rank
FROM salaries
WHERE to_date = '9999-01-01'
ORDER BY salary DESC

24、获取所有非manager员工当前的薪水情况

获取所有非manager员工当前的薪水情况,给出dept_no、emp_no以及salary ,当前表示to_date=‘9999-01-01’

CREATE TABLE `dept_emp` (
`emp_no` int(11) NOT NULL,
`dept_no` char(4) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`dept_no`));
CREATE TABLE `dept_manager` (
`dept_no` char(4) NOT NULL,
`emp_no` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`dept_no`));
CREATE TABLE `employees` (
`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
`gender` char(1) NOT NULL,
`hire_date` date NOT NULL,
PRIMARY KEY (`emp_no`));
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`));
select d.dept_no,s.emp_no,s.salary
from dept_emp as d , salaries as s
where d.emp_no = s.emp_noand s.to_date='9999-01-01'
and d.emp_no not in (select emp_no from dept_manager)

SQ刷题/17-24相关推荐

  1. LeetCode刷题(24)

    Jump Game: 在可选的范围内,选择可以到达最远方的点作为新点,并开始新的搜寻,如果遇到0,且已经是最远可达,那么就无法到达终点. class Solution(object):def canJ ...

  2. 2017-2018年度刷题记录

    2018暑假刷题1: T1.CF6A Triangle (#模拟 -1.4) T2.CF59A Word(#模拟 -1.5) T3.[洛谷]P2772 寻找平面上的极大点(#贪心 -1.4) T4.[ ...

  3. left join缺失右括号_LeetCode刷题实战31:最长有效括号

    来源: https://www.cnblogs.com/techflow/p/12393742.html 算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为 ...

  4. postgre非零相除等于0_LeetCode刷题实战29:两数相除

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  5. LeetCode代码刷题(17~24)

    目录 17. 电话号码的字母组合 18. 四数之和 19. 删除链表的倒数第 N 个结点 20. 有效的括号 21. 合并两个有序链表 22. 括号生成 23. 合并K个升序链表 24. 两两交换链表 ...

  6. 重走长征路---OI每周刷题记录---9月21日 2013 AC 17题

    总目录详见https://blog.csdn.net/mrcrack/article/details/84471041 做题原则,找不到测评地址的题不做.2018-11-28 重走长征路---OI每周 ...

  7. LeetCode:数组刷题(17道经典题目)

    LeetCode 数组刷题(17道经典题目) 本文带来的是以数组为主题的经典题目,主要实现是C++,部分题目也用Python实现了. 704. 二分查找 35.搜索插入位置 34. 在排序数组中查找元 ...

  8. LeetCode刷题记录——17电话号码的字母组合

    LeetCode刷题记录--17电话号码的字母组合 一 题目描述: 给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合.给出数字到字母的映射如下.注意1不对应任何字母 示例: 输入:&quo ...

  9. 重走长征路---OI每周刷题记录---1月17日 2015

    总目录详见https://blog.csdn.net/mrcrack/article/details/84471041 做题原则,找不到测评地址的题不做.2018-11-28 重走长征路---OI每周 ...

最新文章

  1. ASP.NET中验证控件的使用
  2. Python列表对象的sort()方法排序
  3. 全球与中国机器人即服务市场领航调研与投资战略规划分析报告2022-2028年
  4. Java -- 异常的捕获及处理 -- 范例 -- throw与throws的应用
  5. 资深前端开发工程师分享:关于前端学习路线的一些建议
  6. 原生JS操作DOM对象
  7. 【Pix4d精品教程】Pix4dmapper航测内业项目化数据处理完整流程(空三、生成点云、DOM和DSM)
  8. win10绿联usb转串口_绿联usb转串口驱动
  9. 64位lua引擎如何支持32位luac编译出来的二进制字节码?
  10. springMVC+mybatis
  11. 大数据处理系统,分布式存储系统和分布式计算框架介绍
  12. 手动给tabcontrol的tabPage加图标图片方法
  13. 潮汐监测站点 api数据接口
  14. 关于客户端断开连接后服务器抛出异常Connection reset
  15. kubectl源码分析之cordon and uncordon
  16. 前端常见图片格式整理
  17. 【读书笔记】赞成功利主义的学习
  18. 开放平台:网络淘金下一站
  19. C# SolidWorks 二次开发 API --- 2018版 中文翻译 ModelDocExtension 方法
  20. FPGA入门(FPGA结构、Verilog编程基础)

热门文章

  1. 扣扣禁止360破解方法
  2. 华为鸿蒙harmony操作系统 安装使用及下载地址
  3. 20230403英语学习
  4. 不一样的挑战:学习德沃夏克(Dvorak)键盘 诚邀各路朋友参加
  5. 清华谈加60分录取蒋方舟(图)
  6. js实现简易数码时钟
  7. 一般人为什么不成功?(陈安之)
  8. Python-Django毕业设计调查问卷及调查数据统计系统(程序+Lw)
  9. 联网系统中Cisco交换机的注意事项
  10. JAVA 百度地图 API