版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SQL经典面试题及详细答案(实战版)本次题库整理互联网、传统软件、数据分析岗位高频SQL面试题,覆盖入门到进阶核心考点,所有题目均搭配可直接运行的标准SQL答案,适配MySQL主流数据库,语法贴合企业实际开发规范,无冗余花哨写法。通用测试表说明(所有题目共用)1.员工表emp(员工数据)PlainText
emp(emp_id,emp_name,dept_id,salary,hire_date,job)2.部门表dept(部门数据)PlainText
dept(dept_id,dept_name,location)3.工资记录表salary_log(薪资变动数据)PlainText
salary_log(emp_id,salary,change_date)4.成绩表score(学生成绩数据)PlainText
score(stu_id,subject,score)一、基础查询面试题1、查询所有员工的姓名、部门ID、薪资,薪资按降序排序解题思路:基础字段查询+排序,DESC表示降序,ASC为升序(默认可省略)参考答案:PlainText
SELECTemp_name,dept_id,salary
FROMemp
ORDERBYsalaryDESC;2、查询薪资在8000-15000之间的所有员工信息解题思路:范围查询可使用BETWEENAND,也可使用>=<=,两种写法等价参考答案:PlainText
--写法1:BETWEENAND(包含边界值)
SELECT*FROMemp
WHEREsalaryBETWEEN8000AND15000;
--写法2:基础运算符(更通用)
SELECT*FROMemp
WHEREsalary>=8000ANDsalary<=15000;3、查询姓名包含“张”的所有员工解题思路:模糊查询LIKE,%代表任意字符参考答案:PlainText
SELECT*FROMemp
WHEREemp_nameLIKE'%张%';补充:'张%'匹配姓张员工,'%张'匹配名字最后一字为张的员工4、查询部门ID为空的员工信息解题思路:NULL值判断必须用ISNULL,不能用=NULL(SQL规范语法)参考答案:PlainText
SELECT*FROMemp
WHEREdept_idISNULL;二、分组聚合面试题(高频)1、统计每个部门的员工人数、平均薪资、最高薪资、最低薪资解题思路:GROUPBY分组+聚合函数,分组字段为部门ID参考答案:PlainText
SELECT
dept_id,
COUNT(emp_id)ASemp_num,--员工人数
ROUND(AVG(salary),2)ASavg_salary,--平均薪资(保留2位小数)
MAX(salary)ASmax_salary,--最高薪资
MIN(salary)ASmin_salary--最低薪资
FROMemp
GROUPBYdept_id;2、查询员工人数大于3人的部门ID和员工人数解题思路:分组后筛选条件用HAVING,WHERE用于分组前筛选,HAVING用于分组后筛选参考答案:PlainText
SELECTdept_id,COUNT(emp_id)ASemp_num
FROMemp
GROUPBYdept_id
HAVINGCOUNT(emp_id)>3;核心区别:WHERE过滤原始数据,HAVING过滤分组后的聚合结果3、统计每个科目最高分、最低分、平均分参考答案:PlainText
SELECT
subject,
MAX(score)ASmax_score,
MIN(score)ASmin_score,
ROUND(AVG(score),2)ASavg_score
FROMscore
GROUPBYsubject;三、联表查询面试题(核心必考)1、查询所有员工的姓名、所属部门名称、薪资(关联员工表和部门表)解题思路:员工表为主表,左连接部门表,保留所有员工数据(含无部门员工)参考答案:PlainText
SELECT
e.emp_name,
d.dept_name,
e.salary
FROMempe
LEFTJOINdeptdONe.dept_id=d.dept_id;联表说明:1.LEFTJOIN:保留左表所有数据,右表无匹配则显示NULL2.INNERJOIN:只显示两表匹配的数据3.RIGHTJOIN:保留右表所有数据2、查询没有员工的部门ID和部门名称解题思路:部门表左连接员工表,筛选员工ID为空的记录,即为空部门参考答案:PlainText
SELECTd.dept_id,d.dept_name
FROMdeptd
LEFTJOINempeONd.dept_id=e.dept_id
WHEREe.emp_idISNULL;3、查询每个部门的部门名称、员工人数、平均薪资解题思路:联表后分组聚合,以部门维度统计数据参考答案:PlainText
SELECT
d.dept_name,
COUNT(e.emp_id)ASemp_num,
ROUND(AVG(e.salary),2)ASavg_salary
FROMdeptd
LEFTJOINempeONd.dept_id=e.dept_id
GROUPBYd.dept_id,d.dept_name;四、子查询面试题1、查询薪资高于公司平均薪资的员工信息解题思路:子查询先算出公司平均薪资,外层查询筛选符合条件的员工参考答案:PlainText
SELECT*FROMemp
WHEREsalary>(SELECTAVG(salary)FROMemp);2、查询每个部门薪资最高的员工信息解题思路:关联子查询,按部门匹配最高薪资参考答案:PlainText
SELECT*FROMempe1
WHEREsalary=(
SELECTMAX(salary)FROMempe2
WHEREe2.dept_id=e1.dept_id
);3、查询所有参加了数学考试的学生ID(去重)参考答案:PlainText
SELECTDISTINCTstu_id
FROMscore
WHEREsubject='数学';五、经典难题面试题(面试压轴)1、去除员工表中的重复薪资记录,保留emp_id最小的一条解题思路:分组找到重复薪资的最小ID,删除其余重复数据参考答案:PlainText
DELETEe1FROMempe1,empe2
WHEREe1.salary=e2.salaryANDe1.emp_id>e2.emp_id;2、查询连续三个月有薪资变动的员工ID解题思路:使用窗口函数LAG获取上一期数据,判断连续日期参考答案:PlainText
WITHtempAS(
SELECT
emp_id,
change_date,
LAG(change_date,1)OVER(PARTITIONBYemp_idORDERBYchange_date)ASlast_month
FROMsalary_log
)
SELECTDISTINCTemp_id
FROMtemp
WHEREPERIOD_DIFF(DATE_FORMAT(change_date,'%Y%m'),DATE_FORMAT(last_month,'%Y%m'))=1;3、行转列:将学生成绩表转换为学生ID、语文、数学、英语格式解题思路:CASEWHEN条件判断实现行转列,面试超高频考点参考答案:PlainText
SELECT
stu_id,
MAX(CASEsubjectWHEN'语文'THENscoreEND)ASchinese_score,
MAX(CASEsubjectWHEN'数学'THENscoreEND)ASmath_score,
MAX(CASEsubjectWHEN'英语'THENscoreEND)ASenglish_score
FROMscore
GROUPBYstu_id;六、高频概念简答题(口述面试专用)1、LEFTJOIN、INNERJOIN、RIGHTJOIN的区别?1.INNERJOIN:内连接,只返回两张表中匹配成功的数据,是最常用的联表方式;2.LEFTJOIN:左连接,以左表为基准,返回左表所有数据,右表无匹配数据显示NULL;3.RIGHTJOIN:右连接,以右表为基准,返回右表所有数据,左表无匹配数据显示NULL。2、WHERE和HAVING的区别?1.执行顺序:WHERE在分组(GROUPBY)之前执行,HAVING在分组之后执行;2.筛选内容:WHERE筛选原始表的字段数据,HAVING筛选分组后的聚合结果;3.函数支持:WHERE不能使用聚合函数(SUM、MAX、COUNT等),HAVING可以使用聚合函数。3、DI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026-2027学年初中数学七年级上册(新教材)苏科版(新教材)5.1 观察 抽象课时巩固卷
- 安全应急预案解说
- 初中三年级地理《地形图的判读》教案
- 安全员活动教学课件
- 广东深圳市2026届高三年级第二次调研考试英语试卷
- 山东省淄博市2024-2025学年高一下学期期末教学质量检测英语试题(解析版)
- 湖南长沙市望城区第一中学2026届高三下学期考前模拟考试(二)数学试题
- 2026年江苏省苏教版小学英语三年级上册第7单元课后练习题
- 初中英语八年级Unit 3暴风雨叙事写作高级词句教学设计
- 中考物理光学复习分层测评教学设计
- 2026秋新教材统编版九年级上册历史全册教案
- 2026年省级检察院遴选公务员面试真题(附答案)
- 2026年国企办公室文秘招聘笔试真题
- 月子中心母婴营养餐专项承包协议
- 2026瑞众人寿保险有限责任公司校园招聘笔试历年难易错考点试卷带答案解析
- 中国广电考试题库
- 2025年四川省党政领导干部政治理论水平考试(理论测试)历年参考题库含答案详解
- 2025年营口市辅警招聘考试真题(附答案)
- OC人设表模板下载-包含外貌性格背景完整设计要素
- 人教版六年级语文文学常识汇编
- 2025年浙银金租笔试真题及答案
评论
0/150
提交评论