SQL实战
sql实战练习刷题心得
Mirst
W.
展开
-
SQL20 查找员工编号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`));输入描述:无输出描述:原创 2020-10-22 10:10:11 · 259 阅读 · 0 评论 -
SQL19 查找所有员工的last_name和first_name以及对应的dept_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 N原创 2020-10-22 10:10:04 · 149 阅读 · 0 评论 -
SQL18 查找当前薪水排名第二多的员工编号emp_no
题目描述查找当前薪水(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,`gend原创 2020-10-22 10:09:57 · 388 阅读 · 0 评论 -
SQL17 获取当前薪水第二多的员工的emp_no以及其对应的薪水salary
题目描述获取当前(to_date='9999-01-01')薪水第二多的员工的emp_no以及其对应的薪水salaryCREATE 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`));输入描述:无输出描述:emp_no原创 2020-10-22 10:09:49 · 117 阅读 · 0 评论 -
SQL16 统计出当前各个title类型对应的员工当前薪水对应的平均工资
题目描述统计出当前(titles.to_date='9999-01-01')各个title类型对应的员工当前(salaries.to_date='9999-01-01')薪水对应的平均工资。结果给出title以及平均工资avg。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原创 2020-10-22 10:09:41 · 201 阅读 · 0 评论 -
SQL15 查找employees表所有emp_no为奇数
题目描述查找employees表所有emp_no为奇数,且last_name不为Mary(注意大小写)的员工信息,并按照hire_date逆序排列(题目不能使用mod函数)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)原创 2020-10-22 10:09:34 · 435 阅读 · 0 评论 -
SQL14 从titles表获取按照title进行分组,注意对于重复的emp_no进行忽略。
题目描述从titles表获取按照title进行分组,每组个数大于等于2,给出title以及对应的数目t。注意对于重复的emp_no进行忽略(即emp_no重复的title不计算,title对应的数目t不增加)。CREATE TABLE IF NOT EXISTS`titles`(`emp_no` int(11) NOT NULL,`title` varchar(50) NOT NULL,`from_date` date NOT NULL,`to_date` date DEFAULT N..原创 2020-10-21 12:25:24 · 408 阅读 · 0 评论 -
SQL13 从titles表获取按照title进行分组
题目描述从titles表获取按照title进行分组,每组个数大于等于2,给出title以及对应的数目t。CREATE TABLE IF NOT EXISTS "titles" (`emp_no` int(11) NOT NULL,`title` varchar(50) NOT NULL,`from_date` date NOT NULL,`to_date` date DEFAULT NULL);如插入:INSERT INTO titles VALUES(10001,'Senior E原创 2020-10-21 12:10:01 · 83 阅读 · 0 评论 -
SQL12 获取所有部门中当前员工薪水最高的相关信息
题目描述获取所有部门中当前(dept_emp.to_date = '9999-01-01')员工当前(salaries.to_date='9999-01-01')薪水最高的相关信息,给出dept_no, emp_no以及其对应的salary,按照部门升序排列。CREATE TABLE `dept_emp` (`emp_no` int(11) NOT NULL,`dept_no` char(4) NOT NULL,`from_date` date NOT NULL,`to_date` date原创 2020-10-21 11:45:56 · 372 阅读 · 0 评论 -
SQL11 获取所有员工当前的manager
题目描述获取所有员工当前的(dept_manager.to_date='9999-01-01')manager,如果员工是manager的话不显示(也就是如果当前的manager是自己的话结果不显示)。输出结果第一列给出当前员工的emp_no,第二列给出其manager对应的emp_no。CREATE TABLE `dept_emp` (`emp_no` int(11) NOT NULL, -- '所有的员工编号'`dept_no` char(4) NOT NULL, --'部门编号'`fro.原创 2020-10-21 11:06:49 · 170 阅读 · 0 评论 -
SQL10 获取所有非manager的员工emp_no
题目描述获取所有非manager的员工emp_noCREATE 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,`b原创 2020-10-21 10:45:20 · 75 阅读 · 0 评论 -
SQL9 获取所有部门当前manager的当前薪水情况
题目描述获取所有部门当前(dept_manager.to_date='9999-01-01')manager的当前(salaries.to_date='9999-01-01')薪水情况,给出dept_no, emp_no以及salary(请注意,同一个人可能有多条薪水情况记录)CREATE TABLE `dept_manager` (`dept_no` char(4) NOT NULL,`emp_no` int(11) NOT NULL,`from_date` date NOT NULL,`t原创 2020-10-21 10:37:56 · 53 阅读 · 0 评论 -
SQL8 找出所有员工当前具体的薪水salary情况
题目描述找出所有员工当前(to_date='9999-01-01')具体的薪水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`));输入描述:无输出描述原创 2020-10-21 09:50:24 · 327 阅读 · 0 评论 -
SQL7 查找薪水涨幅超过15次的员工号emp_no以及其对应的涨幅次数t
题目描述查找薪水变动超过15次的员工号emp_no以及其对应的变动次数tCREATE 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`));输入描述:无输出描述:emp_no t 10001 17 1原创 2020-10-21 09:42:06 · 227 阅读 · 0 评论 -
SQL6 查找所有员工入职时候的薪水情况
题目描述查找所有员工入职时候的薪水情况,给出emp_no以及salary, 并按照emp_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,`hir原创 2020-10-21 09:30:21 · 431 阅读 · 0 评论 -
SQL5 查找所有员工的last_name和first_name以及对应部门编号dept_no
题目描述查找所有员工的last_name和first_name以及对应部门编号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`));CREA原创 2020-10-20 22:23:26 · 317 阅读 · 0 评论 -
SQL4 查找所有已经分配部门的员工的last_name和first_name
题目描述查找所有已经分配部门的员工的last_name和first_name以及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 `employ原创 2020-10-20 22:18:08 · 147 阅读 · 0 评论 -
SQL3 查找各个部门当前领导当前薪水详情以及其对应部门编号dept_no
题目描述查找各个部门当前(dept_manager.to_date='9999-01-01')领导当前(salaries.to_date='9999-01-01')薪水详情以及其对应部门编号dept_no(注:输出结果以salaries.emp_no升序排序,并且请注意输出结果里面dept_no列是最后一列)CREATE TABLE `salaries` (`emp_no` int(11) NOT NULL, --'员工编号',`salary` int(11) NOT NULL,`fro.原创 2020-10-20 22:13:47 · 451 阅读 · 0 评论 -
SQL2 查找入职员工时间排名倒数第三的员工所有信息
题目描述查找入职员工时间排名倒数第三的员工所有信息,为了减轻入门难度,目前所有的数据里员工入职的日期都不是同一天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 NO原创 2020-10-20 22:05:34 · 115 阅读 · 0 评论 -
SQL1 查找最晚入职员工的所有信息
题目描述查找最晚入职员工的所有信息,为了减轻入门难度,目前所有的数据里员工入职的日期都不是同一天(sqlite里面的注释为--,mysql为comment)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.原创 2020-10-20 21:56:15 · 482 阅读 · 0 评论