首页 > 数据库 >牛客网 SQL 195-204

牛客网 SQL 195-204

时间:2023-03-02 18:57:30浏览次数:46  
标签:01 204 dept 195 employees no 牛客 emp select

195:请你查找employees里最晚入职员工的所有信息

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

解题思路:使用子查询的方法,先找出所有入职时间里最大(即最晚)的时间,这样可以确保多条最晚入职时间都可以被查询出来。

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

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

在查询中,经常要返回前几条或者中间某几行数据时,用到limit
如果limit后面是一个参数,就是检索前多少行。如果limit后面是2个参数,就是从offset+1行开始,检索rows行记录。

select * from table_name limit 10;//检索前10行记录
select * from table_name limit 5 ,10;//从第6行开始,检索10行记录,即:检索记录行 6-15

distinct进行去重的主要原理是通过先对要进行去重的数据进行分组操作,然后从分组后的每组数据中去一条返回给客户端

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

select s.*,d.dept_no
from salaries s join dept_manager d on s.emp_no = d.emp_no
where d.to_date = '9999-01-01' and s.to_date = '9999-01-01';

解题思路:以s.emp_no = d.emp_no为联结条件联结两表,同时限制两表to_date = '9999-01-01'(原因:去重锁定)

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

select e.last_name,e.first_name,d.dept_no
from employees e left join dept_emp d on e.emp_no = d.emp_no
where d.dept_no is not null;

解题思路:employees作为主表,使用左联结,关键是where d.dept_no is not null;题目要查找所有已经分配部门的员工,意味着必须要带有dept_no,没有dept_no的就是还未分配部门的,去除dept_no为空即可求得。

SQL199 查找所有员工的last_name和first_name以及对应部门编号dept_no

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

左查看做表,右查看右表。
解题思路:employees作为主表,使用左联结。

SQL201 查找薪水记录超过15条的员工号emp_no以及其对应的记录次数t

select emp_no,count(distinct salary) t
from salaries 
group by emp_no
having t > 15;

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

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

解题思路:关键理解对于相同的薪水只显示一次,使用分组方法对salary进行分组求得,也可以使用distinct去重的方法,但是一般数据较多时使用distinct效率相比group by 要慢,所以从性能角度考虑,应该尽量使用group by。

使用distinct方法如下:

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

SQL204 获取所有非manager的员工emp_no

select e.emp_no
from employees e left join dept_manager d on e.emp_no = d.emp_no
where d.dept_no is null;

解题思路:employees作为主表,使用左联结,限定条件为d.dept_no为空,选出在employees但不在dept_manager中的emp_no记录。

参考:https://mp.weixin.qq.com/s/5vhfVJ7NW7-bq2d2EIbJwA

标签:01,204,dept,195,employees,no,牛客,emp,select
From: https://www.cnblogs.com/LittleKevin/p/17172805.html

相关文章

  • 2048
    /*************************************************stdio.h标准C语言库*#include包含库*************************************************/#define_CRT_SECURE......
  • mysql牛客网实战练习
    1、模糊查询字段名like'匹配内容'_:下划线代表匹配任意一个字符;%:百分号代表匹配0个或多个字符;[]:中括号代表匹配其中的任意一个字符;[^]:^尖冒号代表......
  • 【牛客】4 序列检测&时序逻辑
    VL25 输入序列连续的序列检测这种题用移位寄存器是最方便的,用状态机会麻烦很多。`timescale1ns/1nsmodulesequence_detect(inputclk,inputrst_n,i......
  • 牛客网算法题:给定一个字符串,计算从做到右的字符出现的个数
    题目:给定一个字符串,计算出从做到右的字符出现的个数忽略字符计算后个数为1的数字例如原始输入字符串:"​​​aabccccaaa​​​"期望输出:“​​​a2bc4a3​​”解释:从左到......
  • 牛客小白月赛67
    比赛链接很久没有打比赛了,这次刚好看到了牛客的月赛,就做了一下。只会前四题,难度不大。一、画牌河思路:直接按照题目要求输出一个矩阵即可,前x个元素为1,后面元素为0代码:......
  • CF204E Little Elephant and Strings 题解
    由于是多个串,还与每个子串的信息有关,很容易想到用SA或广义SAM。这里选择用SA。首先先把字符串转化为数组,连接起来,中间用一些不会出现的数。处理出后缀数组与\(height......
  • P3195 [HNOI2008]玩具装箱 题解
    首先先写dp方程非常简单\(\mathit{f}_{i}=\min(\mathit{f}_{j}+(\mathit{c}_{i}+i-j-1-L-\mathit{c}_{j})^2)\)(其中\(\mathit{c}_{i}\)表示长度前缀和)然后发现括号......
  • ZOJ 3195 Design the city (在线LCA,4级)
    J-DesignthecityCrawlinginprocess...CrawlingfailedTimeLimit:1000MS    MemoryLimit:32768KB    64bitIOFormat:%lld&%llu​​Submi......
  • 【牛客】3 时序逻辑
    VL21 根据状态转移表实现时序电路写一个简单的Moore状态机就可以了,太短就懒得写三段式了。`timescale1ns/1nsmoduleseq_circuit(inputA......
  • 【牛客】1 基础语法
    VL1 四选一多路器`timescale1ns/1nsmodulemux4_1(input[1:0]d1,d2,d3,d0,input[1:0]sel,output[1:0]mux_out);//*************code***********//assignmux......