SQL题目练习

SQL201 查找入职员工时间升序排名的情况下的倒数第三的员工所有信息

题目链接:201题目链接

题目总结:

通过这个题目我了解到了Mysql8.0才有的窗口函数

窗口函数,其实就是在查询结果集时候可以执行聚合函数、排序等操作的高级技术,但是窗口函数和group by函数不一样的是,窗口函数不会去合并或者汇总行,而是会为每一行计算一个值

常见的窗口函数:RANK、ROW_NUMBER、SUM、AVG、MAX、MIN等。

rank()函数和dense_rank()函数的区别:

  • rank函数相当于是不会有并列的情况
  • dense_rank函数相当于有并列的情况

举例子说明:

当使用DENSE_RANK函数对数据进行排名时,如果有多个数据具有相同的排序值,则它们将被分配相同的排名,并且下一个整数排名将会跳过。下面是一个示例:

假设有以下数据: 使用DENSE_RANK函数对数据按照分数进行排名,结果如下所示:

名称分数
A 90
B 85
C 90
D 80
E 85
名称分数DENSE_RANK
A 90 1
C 90 1
B 85 2
E 85 2
D 80 3

解决代码

select
    e.emp_no,
    e.birth_date,
    e.first_name,
    e.last_name,
    e.gender,
    e.hire_date
from
    (
        SELECT
            emp_no,
            birth_date,
            first_name,
            last_name,
            gender,
            hire_date,
            dense_rank() over (
                order by
                    hire_date desc
            ) as rak
        from
           employees
    ) e
where
    rak = 3
order by
    emp_no asc;

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

题目链接:202题目链接

简单就不贴代码了

SQL203 查找所有已经分配部门的员工的last_name和first_name

简单就不贴代码和链接了

SQL204

题目链接:204题目链接

题目总结:

通过这个题目我复习了left join的用法,left join就是包括left join前面的表的全部部分,设表A left join 表B,那么最后的结果集就是肯定是含有A的全部字段的,有些字段即使不在A和B的交集里面也会标为null。

代码

select e.last_name,e.first_name,de.dept_no
from employees e
left join dept_emp de
on e.emp_no=de.emp_no

 

 posted on 2025-06-20 23:52  熙玺  阅读(11)  评论(0)    收藏  举报

Shu-How Zの小窝

Loading...