查找最晚入职员工的所有信息

  1. CREATE TABLE `employees` (
  2. `emp_no` int(11) NOT NULL,
  3. `birth_date` date NOT NULL,
  4. `first_name` varchar(14) NOT NULL,
  5. `last_name` varchar(16) NOT NULL,
  6. `gender` char(1) NOT NULL,
  7. `hire_date` date NOT NULL,
  8. PRIMARY KEY (`emp_no`));

TABLE

  1. select * from employees
  2. where hire_date=
  3. (select max(hire_date) from employees)

SQL

需要注意的是,因为最晚入职的人可能不止一人,所以用top不行。

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

  1. CREATE TABLE `employees` (
  2. `emp_no` int(11) NOT NULL,
  3. `birth_date` date NOT NULL,
  4. `first_name` varchar(14) NOT NULL,
  5. `last_name` varchar(16) NOT NULL,
  6. `gender` char(1) NOT NULL,
  7. `hire_date` date NOT NULL,
  8. PRIMARY KEY (`emp_no`));

TABLE

  1. select * from employees
  2. where hire_date =(
  3. select hire_date from employees
  4. order by hire_date desc limit 2,1)

SQL

查找当前薪水详情以及部门编号dept_no

  1. 查找各个部门当前(to_date='9999-01-01')领导当前薪水详情以及其对应部门编号dept_no
  2. CREATE TABLE `dept_manager` (
  3. `dept_no` char(4) NOT NULL,
  4. `emp_no` int(11) NOT NULL,
  5. `from_date` date NOT NULL,
  6. `to_date` date NOT NULL,
  7. PRIMARY KEY (`emp_no`,`dept_no`));
  8. CREATE TABLE `salaries` (
  9. `emp_no` int(11) NOT NULL,
  10. `salary` int(11) NOT NULL,
  11. `from_date` date NOT NULL,
  12. `to_date` date NOT NULL,
  13. PRIMARY KEY (`emp_no`,`from_date`));

TABLE

  1. select b.*, a.dept_no
  2. from salaries as b inner join dept_manager as a on a.emp_no=b.emp_no
  3. where b.to_date='9999-01-01' and a.to_date='9999-01-01'

SQL

查找所有员工入职时候的薪水情况

  1. 查找所有员工入职时候的薪水情况,给出emp_no以及salary 并按照emp_no进行逆序
  2. CREATE TABLE `employees` (
  3. `emp_no` int(11) NOT NULL,
  4. `birth_date` date NOT NULL,
  5. `first_name` varchar(14) NOT NULL,
  6. `last_name` varchar(16) NOT NULL,
  7. `gender` char(1) NOT NULL,
  8. `hire_date` date NOT NULL,
  9. PRIMARY KEY (`emp_no`));
  10. CREATE TABLE `salaries` (
  11. `emp_no` int(11) NOT NULL,
  12. `salary` int(11) NOT NULL,
  13. `from_date` date NOT NULL,
  14. `to_date` date NOT NULL,
  15. PRIMARY KEY (`emp_no`,`from_date`));

TABLE

  1. select e.emp_no, s.salary
  2. from employees as e inner join salaries as s on e.emp_no = s.emp_no and e.hire_date = s.from_date
  3. order by e.emp_no desc

SQL

查找薪水涨幅超过15次的员工号emp_no以及其对应的涨幅次数t

  1. CREATE TABLE `salaries` (
  2. `emp_no` int(11) NOT NULL,
  3. `salary` int(11) NOT NULL,
  4. `from_date` date NOT NULL,
  5. `to_date` date NOT NULL,
  6. PRIMARY KEY (`emp_no`,`from_date`));

TABLE

  1. select emp_no, count(*) as t
  2. from salaries
  3. group by emp_no
  4. having t>15

SQL

找出所有员工当前薪水salary情况

  1. 找出所有员工当前(to_date='9999-01-01')具体的薪水salary情况,对于相同的薪水只显示一次,并按照逆序显示
  2. CREATE TABLE `salaries` (
  3. `emp_no` int(11) NOT NULL,
  4. `salary` int(11) NOT NULL,
  5. `from_date` date NOT NULL,
  6. `to_date` date NOT NULL,
  7. PRIMARY KEY (`emp_no`,`from_date`));

TABLE

  1. select salary
  2. from salaries
  3. where to_date='9999-01-01'
  4. group by salary
  5. order by salary desc

SQL

获取所有部门当前manager的当前薪水情况

  1. 获取所有部门当前manager的当前薪水情况,给出dept_no, emp_no以及salary,当前表示to_date='9999-01-01'
  2. CREATE TABLE `dept_manager` (
  3. `dept_no` char(4) NOT NULL,
  4. `emp_no` int(11) NOT NULL,
  5. `from_date` date NOT NULL,
  6. `to_date` date NOT NULL,
  7. PRIMARY KEY (`emp_no`,`dept_no`));
  8. CREATE TABLE `salaries` (
  9. `emp_no` int(11) NOT NULL,
  10. `salary` int(11) NOT NULL,
  11. `from_date` date NOT NULL,
  12. `to_date` date NOT NULL,
  13. PRIMARY KEY (`emp_no`,`from_date`));

TABLE

  1. select d.dept_no, d.emp_no, s.salary
  2. from dept_manager as d, salaries as s
  3. where d.emp_no = s.emp_no
  4. and d.to_date = '9999-01-01'
  5. and s.to_date = '9999-01-01'

SQL

获取所有非manager的员工emp_no

  1. CREATE TABLE `dept_manager` (
  2. `dept_no` char(4) NOT NULL,
  3. `emp_no` int(11) NOT NULL,
  4. `from_date` date NOT NULL,
  5. `to_date` date NOT NULL,
  6. PRIMARY KEY (`emp_no`,`dept_no`));
  7. CREATE TABLE `employees` (
  8. `emp_no` int(11) NOT NULL,
  9. `birth_date` date NOT NULL,
  10. `first_name` varchar(14) NOT NULL,
  11. `last_name` varchar(16) NOT NULL,
  12. `gender` char(1) NOT NULL,
  13. `hire_date` date NOT NULL,
  14. PRIMARY KEY (`emp_no`));

TABLE

  1. select emp_no
  2. from employees
  3. where emp_no not in(
  4. select emp_no from dept_manager
  5. )
  6.  
  7. select e.emp_no
  8. from employees as e left join dept_manager as d on e.emp_no = d.emp_no
  9. where d.emp_no is null

SQL

获取所有员工当前的manager

  1. 获取所有员工当前的manager,如果当前的manager是自己的话结果不显示,当前表示to_date='9999-01-01'
  2. 结果第一列给出当前员工的emp_no,第二列给出其manager对应的manager_no
  3. CREATE TABLE `dept_emp` (
  4. `emp_no` int(11) NOT NULL,
  5. `dept_no` char(4) NOT NULL,
  6. `from_date` date NOT NULL,
  7. `to_date` date NOT NULL,
  8. PRIMARY KEY (`emp_no`,`dept_no`));
  9. CREATE TABLE `dept_manager` (
  10. `dept_no` char(4) NOT NULL,
  11. `emp_no` int(11) NOT NULL,
  12. `from_date` date NOT NULL,
  13. `to_date` date NOT NULL,
  14. PRIMARY KEY (`emp_no`,`dept_no`));

TABLE

  1. select d1.emp_no, d2.emp_no as manager_no
  2. from dept_emp as d1 inner join dept_manager as d2 on d1.dept_no = d2.dept_no
  3. where d1.emp_no <> d2.emp_no and d2.to_date='9999-01-01'

SQL

牛客-数据库SQL实战的更多相关文章

  1. 牛客网sql实战参考答案(mysql版):16-21

    16.统计出当前(titles.to_date='9999-01-01')各个title类型对应的员工当前(salaries.to_date='9999-01-01')薪水对应的平均工资.结果给出ti ...

  2. 牛客网sql实战参考答案(mysql版):1-15

    1.查找最晚入职员工的所有信息,为了减轻入门难度,目前所有的数据里员工入职的日期都不是同一天(sqlite里面的注释为--,mysql为comment) CREATE TABLE `employees ...

  3. 牛客网数据库SQL实战解析(51-61题)

    牛客网SQL刷题地址: https://www.nowcoder.com/ta/sql?page=0 牛客网数据库SQL实战解析(01-10题): https://blog.csdn.net/u010 ...

  4. 牛客网数据库SQL实战解析(41-50题)

    牛客网SQL刷题地址: https://www.nowcoder.com/ta/sql?page=0 牛客网数据库SQL实战解析(01-10题): https://blog.csdn.net/u010 ...

  5. 牛客网数据库SQL实战解析(31-40题)

    牛客网SQL刷题地址: https://www.nowcoder.com/ta/sql?page=0 牛客网数据库SQL实战解析(01-10题): https://blog.csdn.net/u010 ...

  6. 牛客网数据库SQL实战解析(21-30题)

    牛客网SQL刷题地址: https://www.nowcoder.com/ta/sql?page=0 牛客网数据库SQL实战解析(01-10题): https://blog.csdn.net/u010 ...

  7. 牛客网数据库SQL实战解析(11-20题)

    牛客网SQL刷题地址: https://www.nowcoder.com/ta/sql?page=0 牛客网数据库SQL实战解析(01-10题): https://blog.csdn.net/u010 ...

  8. 牛客网数据库SQL实战解析(1-10题)

    牛客网SQL刷题地址: https://www.nowcoder.com/ta/sql?page=0 牛客网数据库SQL实战解析(01-10题): https://blog.csdn.net/u010 ...

  9. MySQL:怒刷牛客网“sql实战”

    MySQL:怒刷牛客网"sql实战" 在对MySQL有一定了解后,抽空刷了一下 牛客网上的 数据库SQL 实战,在此做一点小小的记录 SQL1 查找最晚入职员工的所有信息 sele ...

随机推荐

  1. 防止xss和sql注入:JS特殊字符过滤正则

    function stripscript(s) { var pattern = new RegExp("[%--`~!@#$^&*()=|{}':;',\\[\\].<> ...

  2. MongoDB数据导出

    在bin目录下(没有设置环境变量), mongoexport -d Structure_Patents_infos -c patents_texts -o D:\Postgraduate\Python ...

  3. Thinkphp路由配置和静态缓存规则【原创】

    ThinkPHP框架对URL有一定的规范,所以如果你希望定制你的URL格式的话,就需要好好了解下内置的路由功能了,它能让你的URL变得更简洁和有文化. 首先我们在Common/config.php设置 ...

  4. PHP(方法 函数 循环 和 数组 查找)

    循环 和 数组 查找 顺序查找 二分法查找 冒泡排序 方法 函数 定义:一堆代码的集合叫做函数(满足条件下“一堆”) 语法,定义,调用,参数列表(形参,实参),返回值 两种方法: function 方 ...

  5. Python学习之旅(十八)

    Python基础知识(17):面向对象编程(Ⅱ) 获取对象信息 在不知道对象信息的情况下,我们想要去获取对象信息,可以使用以下方法 1.type (1)判断对象类型 >>> type ...

  6. python全栈开发 * 19 面向对象 知识点汇总 * 180701

    19 面向对象初识2 一.类的名称空间1.对象的名称空间对象的名称空间中有类对象指针,对象可以通过"类对象指针"找类中的"静态变量"(静态字段),也可以用对象找 ...

  7. CodeForces 733B Parade

    B. Parade time limit per test1 second memory limit per test256 megabytes inputstandard input outputs ...

  8. PAT1111 Online Map【最短路】【dfs】

    题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805358663417856 题意: 给定一个图,每天边上有时间和路 ...

  9. 程序中打印当前进程的调用堆栈(backtrace)

    为了方便调式程序,产品中需要在程序崩溃或遇到问题时打印出当前的调用堆栈.由于是基于Linux的ARM嵌入式系统,没有足够的空间来存放coredump文件. 实现方法,首先用__builtin_fram ...

  10. JavaScript将字典序升序排列类似php中的ksort函数

    /** * 将json数据进行排序 * @param {*jason} data */ export function JsonSort(jsonData) { try { let tempJsonO ...