牛客网SQL刷题地址: https://www.nowcoder.com/ta/sql?page=0

牛客网数据库SQL实战解析(01-10题): https://blog.csdn.net/u010666669/article/details/104763370

牛客网数据库SQL实战解析(11-20题): https://blog.csdn.net/u010666669/article/details/104863298

牛客网数据库SQL实战解析(21-30题): https://blog.csdn.net/u010666669/article/details/104871373

牛客网数据库SQL实战解析(31-40题): https://blog.csdn.net/u010666669/article/details/104977904

牛客网数据库SQL实战解析(41-50题): https://blog.csdn.net/u010666669/article/details/104979427

牛客网数据库SQL实战解析(51-61题): https://blog.csdn.net/u010666669/article/details/104980372

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

select *
from employees
where hire_date=(
    select max(hire_date) 
    from employees
)
;

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

select *
from employees
where hire_date=(
    select distinct hire_date 
    from employees 
    order by hire_date desc 
    limit 2,1
)
;

limit语法:

limit 1,3 从1位置向后取3条记录。

limit 3 offset 1 等价于 limit 1,3。

第3题 查找各个部门当前(to_date='9999-01-01')领导当前薪水详情以及其对应部门编号dept_no


select t1.emp_no
, t1.salary
, t1.from_date
, t1.to_date
, t2.dept_no
from salaries t1, dept_manager t2
where t1.to_date='9999-01-01'
and t2.to_date='9999-01-01'
and t1.emp_no=t2.emp_no
;

第4题 查找所有已经分配部门的员工的last_name和first_name以及dept_no

select t1.last_name
, t1.first_name
, t2.dept_no
from employees t1, dept_emp t2
where t1.emp_no=t2.emp_no
and t2.dept_no is not null
;

第5题 查找所有员工的last_name和first_name以及对应部门编号dept_no,也包括展示没有分配具体部门的员工

select t1.last_name
, t1.first_name
, t2.dept_no
from employees t1
left join dept_emp t2
on t1.emp_no=t2.emp_no

第6题 查找所有员工入职时候的薪水情况,给出emp_no以及salary, 并按照emp_no进行逆序

select e.emp_no
, s.salary
from salaries s
left join employees e
on s.emp_no=e.emp_no
where s.from_date=e.hire_date
order by e.emp_no desc
;

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

这道题目有问题,参考了提供的正确答案,把薪水变化都当成了涨幅,其实这样处理是有问题的,我按照题目的要求,重新写了下面的sql,虽然提交不通过,但是满足题意。

select t1.emp_no,count(*) t
from salaries t1
inner join salaries t2
on t1.emp_no=t2.emp_no
and t1.to_date = t2.from_date
where t1.salary < t2.salary
group by t1.emp_no
having t > 15
;

题目的要点:

1. 薪资涨了,如果先降了薪资,后来又涨了,也算涨了

2. 按照员工分

3. 大于15次

第8题 找出所有员工当前(to_date='9999-01-01')具体的薪水salary情况,对于相同的薪水只显示一次,并按照逆序显示

select distinct salary
from salaries
where to_date='9999-01-01'
group by emp_no
order by salary desc
;

题解:这道题很简单,按照要求取数,然后按照员工做group by,最后按照薪资做降序排列即可。

第9题 获取所有部门当前manager的当前薪水情况,给出dept_no, emp_no以及salary,当前表示to_date='9999-01-01'

select t1.dept_no
, t1.emp_no
, t2.salary
from dept_manager t1
left join salaries t2
on t1.emp_no=t2.emp_no
where t1.to_date='9999-01-01' and t2.to_date='9999-01-01'
;

第10题 获取所有非manager的员工emp_no

select emp_no
from employees
where emp_no not in (
select emp_no
from dept_manager
)
;

其他题解一:

mysql支持集合运算:EXPECT  集合差运算、UNION  集合并运算、INTERSECT 集合交运算

select emp_no
from employees
except
select emp_no
from dept_manager
;

其他题解二:

select t1.emp_no
from employees t1
left join dept_manager t2
on t1.emp_no = t2.emp_no
where dept_no is null
;

牛客网数据库SQL实战解析(1-10题)的更多相关文章

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

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

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

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

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

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

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

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

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

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

  6. 牛客网数据库SQL实战1-查找最晚入职员工的所有信息

    题目描述 查找最晚入职员工的所有信息CREATE TABLE `employees` (`emp_no` int(11) NOT NULL,`birth_date` date NOT NULL,`fi ...

  7. 牛客网数据库SQL实战(此处只有答案,没有表内容)

    1.查找最晚入职员工的所有信息   select * from employees order by hire_date desc limit 1; --limit n表示输出前n条数据,limit ...

  8. 牛客网数据库SQL实战(21-25)

    21.查找所有员工自入职以来的薪水涨幅情况,给出员工编号emp_no以及其对应的薪水涨幅growth,并按照growth进行升序CREATE TABLE `employees` (`emp_no` i ...

  9. 牛客网数据库SQL实战(16-20)

    16.统计出当前各个title类型对应的员工当前薪水对应的平均工资.结果给出title以及平均工资avg.CREATE TABLE `salaries` (`emp_no` int(11) NOT N ...

随机推荐

  1. Django学习路7_注册app到能够在页面上显示app网页内容

    在根目录下创建一个 app3 app3 是新 app 的名字 创建一个 urls.py 在 urls.py 中添加 urlpatterns 列表 容纳需要显示在页面上的函数 from django.c ...

  2. PHP EOF(heredoc) 使用说明

    PHP EOF(heredoc) 使用说明 PHP EOF(heredoc)是一种在命令行shell(如sh.csh.ksh.bash.PowerShell和zsh)和程序语言(像Perl.PHP.P ...

  3. Python os.readlink() 方法

    概述 os.readlink() 方法用于返回软链接所指向的文件.可能返回绝对或相对路径.高佣联盟 www.cgewang.com 在Unix中有效 语法 readlink()方法语法格式如下: os ...

  4. PHP in_array() 函数

    实例 在数组中搜索值 "Runoob" ,并输出一些文本: <?php $sites = array("Google", "Runoob&quo ...

  5. PHP cal_days_in_month() 函数

    ------------恢复内容开始------------ 实例 针对指定的年份和历法,获取一个月中的天数: <?php$d=cal_days_in_month(CAL_GREGORIAN,1 ...

  6. PHP strtoupper() 函数

    实例 把所有字符转换为大写: <?php高佣联盟 www.cgewang.comecho strtoupper("Hello WORLD!");?> 定义和用法 str ...

  7. PDOStatement::rowCount

    PDOStatement::rowCount — 返回受上一个 SQL 语句影响的行数(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)高佣联盟 www.cgewang ...

  8. K近邻算法(二)

    def KNN_classify(k, X_train, y_train, x): assert 1 <= k <= X_train.shape[0], "k must be v ...

  9. Hibernate 映射

    在使用单纯hibernate文件映射时,项目应包含以下文件: hibernate.cfg.xml  放在src/或根目录下 1 <?xml version='1.0' encoding='utf ...

  10. Android Studio简单的登陆界面

    在app->src->main->java里面找到MainActivity.java,将鼠标放到activity-main上按住Ctrl后单击跳转到activity-main.xml ...