牛客-数据库SQL实战
查找最晚入职员工的所有信息
- 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`));
TABLE
- select * from employees
- where hire_date=
- (select max(hire_date) from employees)
SQL
需要注意的是,因为最晚入职的人可能不止一人,所以用top不行。
查找入职员工时间排名倒数第三的员工所有信息
- 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`));
TABLE
- select * from employees
- where hire_date =(
- select hire_date from employees
- order by hire_date desc limit 2,1)
SQL
查找当前薪水详情以及部门编号dept_no
- 查找各个部门当前(to_date='9999-01-01')领导当前薪水详情以及其对应部门编号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 `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`));
TABLE
- select b.*, a.dept_no
- from salaries as b inner join dept_manager as a on a.emp_no=b.emp_no
- where b.to_date='9999-01-01' and a.to_date='9999-01-01'
SQL
查找所有员工入职时候的薪水情况
- 查找所有员工入职时候的薪水情况,给出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,
- `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`));
TABLE
- select e.emp_no, s.salary
- from employees as e inner join salaries as s on e.emp_no = s.emp_no and e.hire_date = s.from_date
- order by e.emp_no desc
SQL
查找薪水涨幅超过15次的员工号emp_no以及其对应的涨幅次数t
- 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`));
TABLE
- select emp_no, count(*) as t
- from salaries
- group by emp_no
- having t>15
SQL
找出所有员工当前薪水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`));
TABLE
- select salary
- from salaries
- where to_date='9999-01-01'
- group by salary
- order by salary desc
SQL
获取所有部门当前manager的当前薪水情况
- 获取所有部门当前manager的当前薪水情况,给出dept_no, emp_no以及salary,当前表示to_date='9999-01-01'
- 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 `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`));
TABLE
- select d.dept_no, d.emp_no, s.salary
- from dept_manager as d, salaries as s
- where d.emp_no = s.emp_no
- and d.to_date = '9999-01-01'
- and s.to_date = '9999-01-01'
SQL
获取所有非manager的员工emp_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`));
TABLE
- select emp_no
- from employees
- where emp_no not in(
- select emp_no from dept_manager
- )
- select e.emp_no
- from employees as e left join dept_manager as d on e.emp_no = d.emp_no
- where d.emp_no is null
SQL
获取所有员工当前的manager
- 获取所有员工当前的manager,如果当前的manager是自己的话结果不显示,当前表示to_date='9999-01-01'。
- 结果第一列给出当前员工的emp_no,第二列给出其manager对应的manager_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 `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`));
TABLE
- select d1.emp_no, d2.emp_no as manager_no
- from dept_emp as d1 inner join dept_manager as d2 on d1.dept_no = d2.dept_no
- where d1.emp_no <> d2.emp_no and d2.to_date='9999-01-01'
SQL
牛客-数据库SQL实战的更多相关文章
- 牛客网sql实战参考答案(mysql版):16-21
16.统计出当前(titles.to_date='9999-01-01')各个title类型对应的员工当前(salaries.to_date='9999-01-01')薪水对应的平均工资.结果给出ti ...
- 牛客网sql实战参考答案(mysql版):1-15
1.查找最晚入职员工的所有信息,为了减轻入门难度,目前所有的数据里员工入职的日期都不是同一天(sqlite里面的注释为--,mysql为comment) CREATE TABLE `employees ...
- 牛客网数据库SQL实战解析(51-61题)
牛客网SQL刷题地址: https://www.nowcoder.com/ta/sql?page=0 牛客网数据库SQL实战解析(01-10题): https://blog.csdn.net/u010 ...
- 牛客网数据库SQL实战解析(41-50题)
牛客网SQL刷题地址: https://www.nowcoder.com/ta/sql?page=0 牛客网数据库SQL实战解析(01-10题): https://blog.csdn.net/u010 ...
- 牛客网数据库SQL实战解析(31-40题)
牛客网SQL刷题地址: https://www.nowcoder.com/ta/sql?page=0 牛客网数据库SQL实战解析(01-10题): https://blog.csdn.net/u010 ...
- 牛客网数据库SQL实战解析(21-30题)
牛客网SQL刷题地址: https://www.nowcoder.com/ta/sql?page=0 牛客网数据库SQL实战解析(01-10题): https://blog.csdn.net/u010 ...
- 牛客网数据库SQL实战解析(11-20题)
牛客网SQL刷题地址: https://www.nowcoder.com/ta/sql?page=0 牛客网数据库SQL实战解析(01-10题): https://blog.csdn.net/u010 ...
- 牛客网数据库SQL实战解析(1-10题)
牛客网SQL刷题地址: https://www.nowcoder.com/ta/sql?page=0 牛客网数据库SQL实战解析(01-10题): https://blog.csdn.net/u010 ...
- MySQL:怒刷牛客网“sql实战”
MySQL:怒刷牛客网"sql实战" 在对MySQL有一定了解后,抽空刷了一下 牛客网上的 数据库SQL 实战,在此做一点小小的记录 SQL1 查找最晚入职员工的所有信息 sele ...
随机推荐
- 防止xss和sql注入:JS特殊字符过滤正则
function stripscript(s) { var pattern = new RegExp("[%--`~!@#$^&*()=|{}':;',\\[\\].<> ...
- MongoDB数据导出
在bin目录下(没有设置环境变量), mongoexport -d Structure_Patents_infos -c patents_texts -o D:\Postgraduate\Python ...
- Thinkphp路由配置和静态缓存规则【原创】
ThinkPHP框架对URL有一定的规范,所以如果你希望定制你的URL格式的话,就需要好好了解下内置的路由功能了,它能让你的URL变得更简洁和有文化. 首先我们在Common/config.php设置 ...
- PHP(方法 函数 循环 和 数组 查找)
循环 和 数组 查找 顺序查找 二分法查找 冒泡排序 方法 函数 定义:一堆代码的集合叫做函数(满足条件下“一堆”) 语法,定义,调用,参数列表(形参,实参),返回值 两种方法: function 方 ...
- Python学习之旅(十八)
Python基础知识(17):面向对象编程(Ⅱ) 获取对象信息 在不知道对象信息的情况下,我们想要去获取对象信息,可以使用以下方法 1.type (1)判断对象类型 >>> type ...
- python全栈开发 * 19 面向对象 知识点汇总 * 180701
19 面向对象初识2 一.类的名称空间1.对象的名称空间对象的名称空间中有类对象指针,对象可以通过"类对象指针"找类中的"静态变量"(静态字段),也可以用对象找 ...
- CodeForces 733B Parade
B. Parade time limit per test1 second memory limit per test256 megabytes inputstandard input outputs ...
- PAT1111 Online Map【最短路】【dfs】
题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805358663417856 题意: 给定一个图,每天边上有时间和路 ...
- 程序中打印当前进程的调用堆栈(backtrace)
为了方便调式程序,产品中需要在程序崩溃或遇到问题时打印出当前的调用堆栈.由于是基于Linux的ARM嵌入式系统,没有足够的空间来存放coredump文件. 实现方法,首先用__builtin_fram ...
- JavaScript将字典序升序排列类似php中的ksort函数
/** * 将json数据进行排序 * @param {*jason} data */ export function JsonSort(jsonData) { try { let tempJsonO ...