(2025年)常见的SQL练习题(含答案)_第1页
(2025年)常见的SQL练习题(含答案)_第2页
(2025年)常见的SQL练习题(含答案)_第3页
(2025年)常见的SQL练习题(含答案)_第4页
(2025年)常见的SQL练习题(含答案)_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

(2025年)常见的SQL练习题(含答案)1.查询2024年1月1日之后入职的员工姓名、部门ID和薪资,按薪资升序排列。答案:SELECTemp_name,dept_id,salaryFROMemployeeWHEREhire_date>'2024-01-01'ORDERBYsalaryASC;2.用内连接查询员工姓名、部门名称(部门表与员工表通过dept_id关联),仅显示部门名称为'技术部'或'市场部'的记录。答案:SELECTe.emp_name,d.dept_nameFROMemployeeeINNERJOINdepartmentdONe.dept_id=d.dept_idWHEREd.dept_nameIN('技术部','市场部');3.查询薪资高于公司平均薪资的员工姓名和薪资(使用子查询)。答案:SELECTemp_name,salaryFROMemployeeWHEREsalary>(SELECTAVG(salary)FROMemployee);4.按部门统计员工数量、最高薪资和最低薪资,结果包含部门ID和部门名称(关联部门表),并筛选出员工数量超过10人的部门。答案:SELECTd.dept_id,d.dept_name,COUNT(e.emp_id)员工数,MAX(e.salary)最高薪资,MIN(e.salary)最低薪资FROMdepartmentdLEFTJOINemployeeeONd.dept_id=e.dept_idGROUPBYd.dept_id,d.dept_nameHAVINGCOUNT(e.emp_id)>10;5.用窗口函数为每个部门的员工按薪资从高到低排名(相同薪资并列,后续排名不跳跃),结果包含员工姓名、部门ID、薪资和排名。答案:SELECTemp_name,dept_id,salary,DENSE_RANK()OVER(PARTITIONBYdept_idORDERBYsalaryDESC)排名FROMemployee;6.查询2023年每个月入职的员工数量,结果按月份升序排列(入职日期格式为'YYYY-MM-DD')。答案:SELECTDATE_FORMAT(hire_date,'%Y-%m')月份,COUNT(emp_id)入职人数FROMemployeeWHEREYEAR(hire_date)=2023GROUPBYDATE_FORMAT(hire_date,'%Y-%m')ORDERBY月份ASC;7.查询同时属于'技术部'和'AI项目'的员工姓名(员工表与项目表通过emp_id关联,项目表中项目名称为'AI项目')。答案:SELECTe.emp_nameFROMemployeeeINNERJOINdepartmentdONe.dept_id=d.dept_idINNERJOINprojectpONe.emp_id=p.emp_idWHEREd.dept_name='技术部'ANDject_name='AI项目';8.查询员工表中没有直属领导(manager_id为NULL)的员工,以及他们所在的部门名称(若部门不存在则显示'无部门')。答案:SELECTe.emp_name,COALESCE(d.dept_name,'无部门')部门名称FROMemployeeeLEFTJOINdepartmentdONe.dept_id=d.dept_idWHEREe.manager_idISNULL;9.用UNIONALL合并薪资大于20000的员工和2022年入职的员工记录(结果去重)。答案:SELECTemp_id,emp_name,dept_id,salary,hire_dateFROMemployeeWHEREsalary>20000UNIONSELECTemp_id,emp_name,dept_id,salary,hire_dateFROMemployeeWHEREYEAR(hire_date)=2022;10.计算每个员工从入职到2025年1月1日的在职月数(保留2位小数),并筛选出在职月数超过36个月的员工。答案:SELECTemp_name,ROUND(DATEDIFF('2025-01-01',hire_date)/30.44,2)在职月数FROMemployeeWHEREDATEDIFF('2025-01-01',hire_date)>3630.44;11.查询部门表中所有父部门(父部门ID不为NULL)的子部门数量,结果包含父部门ID、父部门名称和子部门数量。答案:SELECTparent.dept_id父部门ID,parent.dept_name父部门名称,COUNT(child.dept_id)子部门数量FROMdepartmentparentLEFTJOINdepartmentchildONparent.dept_id=child.parent_dept_idWHEREparent.parent_dept_idISNOTNULLGROUPBYparent.dept_id,parent.dept_name;12.用子查询更新技术部员工的薪资(提高5%,技术部dept_id为D001)。答案:UPDATEemployeeSETsalary=salary1.05WHEREdept_id=(SELECTdept_idFROMdepartmentWHEREdept_name='技术部'ANDdept_id='D001');13.查询员工表中姓名重复的记录(姓名相同的员工),显示姓名和重复次数。答案:SELECTemp_name,COUNT(emp_id)重复次数FROMemployeeGROUPBYemp_nameHAVINGCOUNT(emp_id)>1;14.用窗口函数计算每个员工的薪资与所在部门平均薪资的差值,结果包含员工姓名、部门ID、薪资、部门平均薪资、差值。答案:SELECTemp_name,dept_id,salary,AVG(salary)OVER(PARTITIONBYdept_id)部门平均薪资,salaryAVG(salary)OVER(PARTITIONBYdept_id)差值FROMemployee;15.删除2020年1月1日之前入职且薪资低于5000的员工记录。答案:DELETEFROMemployeeWHEREhire_date<'2020-01-01'ANDsalary<5000;16.查询项目表中参与项目数量超过2个的员工,显示员工ID和参与项目数。答案:SELECTemp_id,COUNT(project_id)参与项目数FROMprojectGROUPBYemp_idHAVINGCOUNT(project_id)>2;17.将员工表按薪资分为三个等级:低(<8000)、中(8000-15000)、高(>15000),统计各等级的员工数量。答案:SELECTCASEWHENsalary<8000THEN'低'WHENsalaryBETWEEN8000AND15000THEN'中'ELSE'高'END薪资等级,COUNT(emp_id)员工数量FROMemployeeGROUPBY薪资等级;18.查询每个部门中薪资最高的员工姓名(若有多个并列则全部显示)。答案:WITHdept_max_salaryAS(SELECTdept_id,MAX(salary)max_salaryFROMemployeeGROUPBYdept_id)SELECTe.emp_name,e.dept_id,e.salaryFROMemployeeeINNERJOINdept_max_salarydmsONe.dept_id=dms.dept_idANDe.salary=dms.max_salary;19.用递归CTE查询部门层级(部门表有parent_dept_id字段表示父部门ID),显示部门ID、部门名称、层级(根部门层级为1)。答案:WITHRECURSIVEdept_hierarchyAS(SELECTdept_id,dept_name,1AS层级FROMdepartmentWHEREparent_dept_idISNULLUNIONALLSELECTd.dept_id,d.dept_name,dh.层级+1FROMdepartmentdINNERJOINdept_hierarchydhONd.parent_dept_id=dh.dept_id)SELECTFROMdept_hierarchy;20.查

温馨提示

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

评论

0/150

提交评论