本篇主要包含牛客面试必考真题SQL篇72题的基础部分,主要包括入门级别(1题)、简单级别(18题)、中等级别(31道),答案均为自己编写且已验证无误,小伙伴们如果有更好的解题方案可以随时留言或者私信我哈!后续22道题目会在进阶篇中更新~
刷题链接:牛客精选数据库SQL实战
SQL专题文章转送门:
一文掌握python连接SQL Server,MySQL,MongoDB,Redis数据库
入门级别(1题)
SQL1:查找最晚入职员工的所有信息
select * from employees
order by hire_date desc
limit 1
简单级别(18题)
SQL2:查找入职员工时间排名倒数第三的员工所有信息。
select * from employees
order by hire_date desc
limit 2,1
SQL4:查找所有已经分配部门的员工的last_name和first_name以及dept_no。
select last_name, first_name, dept_no
from employees, dept_emp
where employees.emp_no = dept_emp.emp_no
SQL7:查找薪水变动超过15次的员工号emp_no以及其对应的变动次数t。
select emp_no, count(*) as t from salaries
group by emp_no
having count(*) > 15
SQL8:找出所有员工当前(to_date=‘9999-01-01’)具体的薪水salary情况。
select distinct salary from salaries
where to_date='9999-01-01'
order by salary desc
SQL10:获取所有非manager的员工emp_no。
select employees.emp_no
from employees left join dept_manager
on employees.emp_no = dept_manager.emp_no
where dept_no is null
SQL13:从titles表获取按照title进行分组。
select title, count(*) as t
from titles
group by title
having count(*) >= 2
SQL15:查找employees表所有emp_no为奇数。
select *
from employees
where emp_no%2=1 and last_name!='Mary'
order by hire_date desc
SQL20:查找员工编号emp_no为10001其自入职以来的薪水salary涨幅growth。
select max(salary)-min(salary)
from salaries
where emp_no = 10001
SQL32:将employees表的所有员工的last_name和first_name拼接起来作为Name,中间以一个空格区分。
select concat(last_name,' ',first_name) as Name
from employees
SQL34:批量插入数据。
insert into actor(actor_id, first_name,