SQL常见笔试真题及详细答案(企业高频版)_第1页
SQL常见笔试真题及详细答案(企业高频版)_第2页
SQL常见笔试真题及详细答案(企业高频版)_第3页
SQL常见笔试真题及详细答案(企业高频版)_第4页
SQL常见笔试真题及详细答案(企业高频版)_第5页
已阅读5页,还剩3页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SQL常见笔试真题及详细答案(企业高频版)本次题库适配校招、实习生、初级开发岗位笔试,涵盖SQL基础、查询筛选、分组聚合、多表联查、子查询、排序分页、经典场景难题,所有题目均为互联网、传统IT企业高频真题,答案可直接在MySQL环境运行,解析贴合笔试解题思路,简洁实用。通用测试表说明(所有题目基于以下三张表)1.员工表emp(员工基础信息)字段:emp_id(员工编号,主键)、emp_name(员工姓名)、dept_id(部门编号)、salary(薪资)、hire_date(入职日期)、gender(性别)2.部门表dept(部门信息)字段:dept_id(部门编号,主键)、dept_name(部门名称)、address(部门地址)3.工资记录表salary_log(薪资变动记录)字段:id(主键)、emp_id(员工编号)、salary(变动后薪资)、change_date(变动日期)一、基础查询类(入门必考题)题目1:查询所有员工的姓名、入职日期、薪资解题思路:简单单表查询,指定需要展示的字段即可,无需筛选条件参考答案:sql

SELECTemp_name,hire_date,salaryFROMemp;题目2:查询薪资大于8000的所有员工信息解题思路:使用WHERE条件筛选数值范围,*代表查询所有字段参考答案:sql

SELECT*FROMempWHEREsalary>8000;题目3:查询部门编号为10、20的员工姓名和薪资解题思路:多值匹配优先使用IN,比多个OR语句更简洁参考答案:sql

SELECTemp_name,salaryFROMempWHEREdept_idIN(10,20);题目4:查询姓名包含“张”的所有员工解题思路:模糊查询使用LIKE,%代表任意字符,%张%表示中间包含张参考答案:sql

SELECT*FROMempWHEREemp_nameLIKE'%张%';题目5:查询入职时间在2023年的员工信息解题思路:两种常用写法,YEAR()函数提取年份,或直接日期区间筛选参考答案:sql

--写法1:函数提取年份(简洁常用)

SELECT*FROMempWHEREYEAR(hire_date)=2023;

--写法2:日期区间筛选(效率更高,推荐笔试优先写)

SELECT*FROMempWHEREhire_dateBETWEEN'2023-01-01'AND'2023-12-31';二、排序与分页类(高频基础题)题目6:查询所有员工信息,按薪资降序排序,薪资相同按入职时间升序排序解题思路:ORDERBY字段排序方式,DESC降序,ASC升序(默认可省略),多字段排序依次书写参考答案:sql

SELECT*FROMempORDERBYsalaryDESC,hire_dateASC;题目7:查询薪资排名前5的员工姓名和薪资(取最高5人)解题思路:LIMIT分页限制条数,先排序再取前N条,笔试必考组合用法参考答案:sql

SELECTemp_name,salaryFROMempORDERBYsalaryDESCLIMIT5;题目8:查询第6-10名的员工薪资数据(分页查询)解题思路:LIMIT偏移量,条数,偏移量=(页码-1)*每页条数,第6条偏移量为5参考答案:sql

SELECT*FROMempORDERBYsalaryDESCLIMIT5,5;三、分组聚合类(核心高频考点)常用聚合函数:COUNT计数、SUM求和、AVG平均值、MAX最大值、MIN最小值题目9:统计每个部门的员工人数、平均薪资、最高薪资、最低薪资解题思路:按部门编号GROUPBY分组,搭配聚合函数统计,字段需与分组字段匹配参考答案:sql

SELECT

dept_idAS部门编号,

COUNT(emp_id)AS员工人数,

ROUND(AVG(salary),2)AS平均薪资,

MAX(salary)AS最高薪资,

MIN(salary)AS最低薪资

FROMemp

GROUPBYdept_id;题目10:查询员工人数大于3人的部门编号和员工人数解题思路:分组后筛选条件用HAVING,WHERE用于分组前筛选,HAVING用于分组后筛选参考答案:sql

SELECTdept_id,COUNT(emp_id)AS员工人数

FROMemp

GROUPBYdept_id

HAVINGCOUNT(emp_id)>3;题目11:统计男女员工的人数解题思路:按性别字段分组,简单分组统计场景参考答案:sql

SELECTgenderAS性别,COUNT(emp_id)AS人数

FROMemp

GROUPBYgender;四、多表联查类(笔试重难点)联表核心:INNERJOIN内连接(匹配交集)、LEFTJOIN左连接(左表全部+右表匹配数据)题目12:查询所有员工的姓名、薪资、所属部门名称解题思路:员工表存部门编号,部门表存部门名称,通过dept_id关联,使用内连接参考答案:sql

SELECTe.emp_name,e.salary,d.dept_name

FROMempe

INNERJOINdeptdONe.dept_id=d.dept_id;题目13:查询所有部门的员工数量(包含无员工的部门)解题思路:需要展示全部部门,必须用左连接,部门表为左表,员工表为右表,COUNT统计员工编号参考答案:sql

SELECTd.dept_id,d.dept_name,COUNT(e.emp_id)AS员工人数

FROMdeptd

LEFTJOINempeONd.dept_id=e.dept_id

GROUPBYd.dept_id,d.dept_name;题目14:查询薪资大于10000的员工姓名、部门名称、入职时间解题思路:联表后加WHERE条件筛选数据,多表查询建议使用表别名简化语句参考答案:sql

SELECTe.emp_name,d.dept_name,e.hire_date

FROMempe

JOINdeptdONe.dept_id=d.dept_id

WHEREe.salary>10000;五、子查询类(进阶必考题)题目15:查询薪资高于公司平均薪资的员工信息解题思路:先通过子查询算出公司平均薪资,再筛选大于该值的员工参考答案:sql

SELECT*FROMemp

WHEREsalary>(SELECTAVG(salary)FROMemp);题目16:查询和“张三”同部门的所有员工解题思路:子查询先获取张三的部门编号,外层查询匹配该部门编号参考答案:sql

SELECT*FROMemp

WHEREdept_id=(SELECTdept_idFROMempWHEREemp_name='张三');题目17:查询所有有薪资变动记录的员工姓名解题思路:EXISTS子查询,判断员工编号是否存在于薪资记录表中,效率高于IN参考答案:sql

SELECTemp_nameFROMempe

WHEREEXISTS(SELECT1FROMsalary_logsWHEREs.emp_id=e.emp_id);六、经典难题(笔试拉分题)题目18:查询每个部门薪资最高的员工信息解题思路:先分组查出各部门最高薪资,再关联原表匹配对应员工数据参考答案:sql

SELECTe.*FROMempe

INNERJOIN(

SELECTdept_id,MAX(salary)ASmax_salary

FROMemp

GROUPBYdept_id

)tONe.dept_id=t.dept_idANDe.salary=t.max_salary;题目19:去除员工表中的重复薪资数据,只保留一条解题思路:DISTINCT去重,查询唯一薪资数据参考答案:sql

SELECTDISTINCTsalaryFROMempORDERBYsalary;题目20:统计2023年每个月的新入职员工人数解题思路:提取入职月份,按月份分组,筛选2023年数据参考答案:sql

SELECT

MONTH(hire_date)AS入职月份,

COUNT(emp_id)AS入职人数

FROMemp

WHEREYEAR(hire_date)=2023

GROUPBYMONTH(hire_date)

ORDERBY入职月份;七、笔试高频简答题(概念必背)1、WHERE和HAVING的区别?1.执行顺序:WHERE在分组(GROUPBY)之前筛选数据,HAVING在分组之后筛选分组结果;2.适用范围:WHERE不能使用聚合函数(SUM/AVG/COUNT等),HAVING可以使用聚合函数;3.作用对象:WHERE筛选表中原始数据行,HAVING筛选分组后的统计结果。2、LEFTJOIN和INNERJOIN的区别?1.INNERJOIN(内连接):只查询两张表中匹配关联条件的数据,无匹配数据则不展示;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论