sql练习

这篇具有很好参考价值的文章主要介绍了sql练习。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

查找入职员工时间排名倒数第三的员工所有信息

注意:可能会存在同一个日期入职的员工,所以入职员工时间排名倒数第三的员工可能不止一个。

示例:

SQL
建表语句等
输入:
drop table if exists  `employees` ;
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 employees VALUES(10001,'1953-09-02','Georgi','Facello','M','1986-06-26');
INSERT INTO employees VALUES(10002,'1964-06-02','Bezalel','Simmel','F','1985-11-21');
INSERT INTO employees VALUES(10003,'1959-12-03','Parto','Bamford','M','1986-08-28');
INSERT INTO employees VALUES(10004,'1954-05-01','Chirstian','Koblick','M','1986-12-01');
INSERT INTO employees VALUES(10005,'1955-01-21','Kyoichi','Maliniak','M','1989-09-12');
INSERT INTO employees VALUES(10006,'1953-04-20','Anneke','Preusig','F','1989-06-02');
INSERT INTO employees VALUES(10007,'1957-05-23','Tzvetan','Zielinski','F','1989-02-10');
INSERT INTO employees VALUES(10008,'1958-02-19','Saniya','Kalloufi','M','1994-09-15');
INSERT INTO employees VALUES(10009,'1952-04-19','Sumant','Peac','F','1985-02-18');
INSERT INTO employees VALUES(10010,'1963-06-01','Duangkaew','Piveteau','F','1989-08-24');
INSERT INTO employees VALUES(10011,'1953-11-07','Mary','Sluis','F','1990-01-22');
 输出:
10005|1955-01-21|Kyoichi|Maliniak|M|1989-09-12

解题思路:

SQL
和第一题一样,只是说他找的是倒数第三个入职的员工
思路一:降序排列找第三个(第一个bug是不是就显示出来了) 所以只能用方法二
思路二:一样是是打行号(但是用哪个函数呢??是不是DENSE_RANK)

思路一:降序排列找第三个(第一个bug是不是就显示出来了) 所以只能用方法二

SQL
-- 先筛选出来倒数第三入职的日期
    SELECT DISTINCT hire_date
    FROM employees
    ORDER BY hire_date DESC
    LIMIT 1 OFFSET 2

--  子查询找到所有员工倒数第三的详细信息并返回
SELECT *
FROM employees
WHERE hire_date = (
    SELECT DISTINCT hire_date
    FROM employees
    ORDER BY hire_date DESC
    LIMIT 1 OFFSET 2
);

思路二:一样是是大行好(但是用哪个函数呢??是不是DENSE_RANK)

SQL
-- 先打行号
select *,
DENSE_RANK() over(order by hire_date desc )as n
from employees

-- 再筛选出倒数第三入职的
select emp_no,birth_date,first_name,last_name,gender,hire_date
from(
select *,
DENSE_RANK() over(order by hire_date desc )as num
from employees
) a
where num=3

查找入职员工时间排名倒数第三的员工所有信息

注意:可能会存在同一个日期入职的员工,所以入职员工时间排名倒数第三的员工可能不止一个。

示例:

SQL
建表语句等
输入:
drop table if exists  `employees` ;
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 employees VALUES(10001,'1953-09-02','Georgi','Facello','M','1986-06-26');
INSERT INTO employees VALUES(10002,'1964-06-02','Bezalel','Simmel','F','1985-11-21');
INSERT INTO employees VALUES(10003,'1959-12-03','Parto','Bamford','M','1986-08-28');
INSERT INTO employees VALUES(10004,'1954-05-01','Chirstian','Koblick','M','1986-12-01');
INSERT INTO employees VALUES(10005,'1955-01-21','Kyoichi','Maliniak','M','1989-09-12');
INSERT INTO employees VALUES(10006,'1953-04-20','Anneke','Preusig','F','1989-06-02');
INSERT INTO employees VALUES(10007,'1957-05-23','Tzvetan','Zielinski','F','1989-02-10');
INSERT INTO employees VALUES(10008,'1958-02-19','Saniya','Kalloufi','M','1994-09-15');
INSERT INTO employees VALUES(10009,'1952-04-19','Sumant','Peac','F','1985-02-18');
INSERT INTO employees VALUES(10010,'1963-06-01','Duangkaew','Piveteau','F','1989-08-24');
INSERT INTO employees VALUES(10011,'1953-11-07','Mary','Sluis','F','1990-01-22');
 输出:
10005|1955-01-21|Kyoichi|Maliniak|M|1989-09-12

解题思路:

SQL
和第一题一样,只是说他找的是倒数第三个入职的员工
思路一:降序排列找第三个(第一个bug是不是就显示出来了) 所以只能用方法二
思路二:一样是是打行号(但是用哪个函数呢??是不是DENSE_RANK)

思路一:降序排列找第三个(第一个bug是不是就显示出来了) 所以只能用方法二

SQL
-- 先筛选出来倒数第三入职的日期
    SELECT DISTINCT hire_date
    FROM employees
    ORDER BY hire_date DESC
    LIMIT 1 OFFSET 2

--  子查询找到所有员工倒数第三的详细信息并返回
SELECT *
FROM employees
WHERE hire_date = (
    SELECT DISTINCT hire_date
    FROM employees
    ORDER BY hire_date DESC
    LIMIT 1 OFFSET 2
);

思路二:一样是是大行好(但是用哪个函数呢??是不是DENSE_RANK)

SQL
-- 先打行号
select *,
DENSE_RANK() over(order by hire_date desc )as n
from employees

-- 再筛选出倒数第三入职的
select emp_no,birth_date,first_name,last_name,gender,hire_date
from(
select *,
DENSE_RANK() over(order by hire_date desc )as num
from employees
) a
where num=3
文章来源地址https://www.toymoban.com/news/detail-466450.html

到了这里,关于sql练习的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【SQL开发实战技巧】系列(三十六):数仓报表场景☞整理垃圾数据:查找数据的连续性时间和重叠时间的关系,初始化开始结束时间

    【SQL开发实战技巧】系列(一):关于SQL不得不说的那些事 【SQL开发实战技巧】系列(二):简单单表查询 【SQL开发实战技巧】系列(三):SQL排序的那些事 【SQL开发实战技巧】系列(四):从执行计划讨论UNION ALL与空字符串UNION与OR的使用注意事项 【SQL开发实战技巧】系列

    2024年02月03日
    浏览(50)
  • Mysql练习——建立一张员工信息表employees,字段包括员工姓名、员工号、所属部门、职位、奖金(可为空)、每月薪资。

    建立数据表employees 查询员工号为5的员工的姓名和部门号和年薪。年薪=每月薪资*12 选择工资不在5000到12000的员工的姓名和工资 选择在20或50号部门工作的员工姓名和部门号 选择姓名中有字母a和e的员工姓名 显示出表employees部门编号在80-100之间的姓名﹑职位。 将姓名中包含e字

    2024年02月07日
    浏览(37)
  • JAVA面向对象练习题,课后编程题。题目为:公司员工分为5类,每类员工都有相应的封装类。

    某公司的员工分为5类,每类员工都有相应的封装类,这5个类的信息如下 (1)Employee:这是所有员工的父类。 ①属性:员工的姓名、员工的生日月份。 )方法:getSalary(int month)根据参数月份确定工资。如果该月员工过生日,则公司会额外发放100元。 (2)SalariedEmployee:Employee 

    2024年02月05日
    浏览(49)
  • 用一个尽可能高效的算法,查找单向链表(有头结点)中倒数第k个位置上的结点

       定义两个指向链表首结点的指针变量,第一个指针变量向后移动k个位置后,第二个指针变量也开始跟着一起向后移动,直到第一个指针变量指向尾结点为止,第二个指针变量指向的位置结点就是倒数第k个结点。

    2024年04月24日
    浏览(34)
  • 倒计时组件:可视化如何自定义目标时间 / 数字倒数

    倒计时组件支持通过自定义目标时间或倒数数字,在报表和大屏中展示时间倒数和数字倒数。 下面以Sugar BI为例,为大家展示 倒计时组件提供「时间倒数」和「数字倒数」两种展示模式,效果如下: 默认为「时间倒数」模式,打开「倒数模式」开关,可切换为「数字倒数」

    2023年04月08日
    浏览(48)
  • 【SQL】1407. 排名靠前的旅行者

    leetcode题目:1407. 排名靠前的旅行者 先过滤,再连表 先连表,再过滤

    2024年03月22日
    浏览(43)
  • 常见的四种排名函数的用法(sql)

    四个排名函数: 1.row_number 2.rank 3.dense_rank 4.ntile 1. ROW_NUMBER(排名场景推荐) 1.1 介绍 在 SQL 中,ROW_NUMBER() 是一个窗口函数,它为结果集中的每一行分配一个唯一的序号。该函数的语法如下: 其中,ORDER BY 子句指定了 ROW_NUMBER() 函数排列行的顺序。如果省略 ORDER BY,则序号将按

    2024年02月01日
    浏览(35)
  • 「SQL面试题库」 No_54 项目员工 III

    「SQL面试题库」是由 不是西红柿 发起,全员免费参与的SQL学习活动。我每天发布1道SQL面试真题,从简单到困难,涵盖所有SQL知识点,我敢保证只要做完这100道题,不仅能轻松搞定面试,代码能力和工作效率也会有明显提升。 1.1 活动流程 整理题目 :西红柿每天无论刮风下雨

    2024年02月02日
    浏览(27)
  • 「SQL面试题库」 No_53 项目员工II

    「SQL面试题库」是由 不是西红柿 发起,全员免费参与的SQL学习活动。我每天发布1道SQL面试真题,从简单到困难,涵盖所有SQL知识点,我敢保证只要做完这100道题,不仅能轻松搞定面试,代码能力和工作效率也会有明显提升。 1.1 活动流程 整理题目 :西红柿每天无论刮风下雨

    2024年02月04日
    浏览(37)
  • 用 sql 查询部门工资最高的员工信息(三种解法)

    今天笔试做了一道简单算法题,一道简单 sql 题,sql 题的大意是分别有员工表和部门表两张表,关联字段是部门id,求每个部门薪资最高的员工的信息,薪资最高有多个人需要全部输出。 当时我只想到了一种解法 先用子查询查到每个部门的最高工资,然后把用部门id把员工表

    2024年02月12日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包