面试官:你都工作2年了,这8条查询sql题不会做?

本文通过20道逐步进阶的SQL子查询题目,检验并提升你的MySQL技能。涉及员工、部门和地点三张表,涵盖了查询部门信息、比较工资、查找特定部门员工等多个场景,适合初级到中级水平的学习者。挑战完成这些题目,将有助于掌握数据库查询的高级技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

在使用mysql数据库使用中,最常用,也最考验mysql功底的是sql查询,,sql查询中相对复杂的莫过于子查询。以下这20题是难度依次递增的子查询相关题目。可以用来检验你是否拥有可以使用mysql初级水平的考验!面对疾风吧!!!!(以下题目是sql专家康师傅提供)

表信息

接下来我们大致介绍一下表信息

image.png

主要分为员工表EMPLOYEES,部门表DEPARTMENTS,地点表LOCATIONS

  • EMPLOYEES包含 employee_id 员工id,唯一 first_name 名 last_name 姓 email 邮箱 phone_number 手机号 job_id 职位id salary 奖金 commission_pct 提成,也可以说奖金率 manager_id 自己上司的employee_id department_id 部门id
  • DEPARTMENT包含 department_id 部门id department_name 部门名字 manager_id 自己上司的employee_id location_id 工作地点id
  • LOCATIONS包含 location_id 工作地点id street_address 地址 postal_code 邮政编码 city 城市 state_province 州省 country_id 国家id

开始

1、查询和小明相同部门的员工姓名和工资。

很明显,easy!要先查询小明的部门,然后用这个部门id去查等于此id的员工姓名和工资

SELECT last_name, salaryFROM employeesWHERE department_id = (    SELECT department_id    FROM employees    WHERE last_name = '小明')

2、查询工资比全公司平均工资高的员工的员工号,姓名和工资

这个跟上面的题类似,也很简单,先查询公司平均工资

SELECT employee_id, last_name, salaryFROM employeesWHERE salary > (    SELECT AVG(salary)    FROM employees)

3、查询和姓名中包含字母u的员工在相同部门的员工号和姓名

SELECT employee_id, last_nameFROM employeesWHERE department_id IN (    SELECT DISTINCT department_id    FROM employees    WHERE last_name LIKE '%u%')

4、查询工资最低的员工信息:last_name, salary

SELECT last_name, salaryFROM employeesWHERE salary = (    SELECT DISTINCT MIN(salary)    FROM employees)

5、查询工资最低的员工信息:last_name, salary

SELECT last_name, salaryFROM employeesWHERE salary = (    SELECT DISTINCT MIN(salary)    FROM employees)

6、查询平均工资最低的部门

SELECT d.*FROM departments AS d, (SELECT department_id, AVG(salary) AS avg_salFROM employeesGROUP BY department_idORDER BY avg_sal ASCLIMIT 0, 1) AS sWHERE d.department_id = s.department_id

下面的题要用到相关子查询,数据初级mysql学习者,查询的最高难度类型。答不出来很正常,学习一下就好。在此我向大家推荐一个架构学习交流圈。交流学习指导伪鑫:1253431195(里面有大量的面试题及答案)里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

7、查询各部门中工资比本部门平均工资高的员工的 last_name, salary, department_id

SELECT last_name, salary, department_idFROM employees AS e1WHERE salary > (    SELECT AVG(salary)    FROM employee e2    WHERE depatrtment_id = e1.`department_id`);

8、查询每个部门下的部门人数大于 5 的部门名称

SELECT department_nameFROM departments AS dWHERE 5 < (    SELECT COUNT(*)    FROM employee e    WHERE d.depatrtment_id = e.`department_id`);

完毕,接下来学习完高级mysql教程,就可以继续搞nestjs的prisma ORM了,今年一定要把nestjs作为储备技术。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值