2026年SQL数据分析师笔试题库及答案_第1页
2026年SQL数据分析师笔试题库及答案_第2页
2026年SQL数据分析师笔试题库及答案_第3页
2026年SQL数据分析师笔试题库及答案_第4页
2026年SQL数据分析师笔试题库及答案_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

2026年SQL数据分析师笔试题库及答案一、单选题(共5题,每题2分)1.在SQL查询中,以下哪个函数可以用来计算一组数值的平均值?A.SUM()B.MAX()C.AVG()D.COUNT()答案:C解析:AVG()函数用于计算数值列的平均值,SUM()计算总和,MAX()找最大值,COUNT()统计行数。2.以下哪个SQL语句可以用来删除表中的重复数据,并保留第一条记录?A.DELETEDISTINCTB.REMOVEDUPLICATEC.DELETEWITHDUPLICATED.DELETEDISTINCTROW答案:D解析:在某些数据库(如MySQL)中,`DELETEDISTINCTROW`可以删除重复行,保留第一条。标准SQL使用`WITHDUPLICATE`或临时表+`DELETE`组合实现。3.以下哪个索引类型最适合用于频繁执行的查询条件,尤其是对大数据量的表?A.哈希索引B.B树索引C.全文索引D.位图索引答案:B解析:B树索引支持范围查询和排序,适合复杂查询;哈希索引只支持精确匹配;全文索引用于文本搜索;位图索引适用于低基数数据的频繁AND/OR查询。4.在SQL中,如何将字符串“2026-01-01”转换为日期格式?A.TO_NUMBER()B.TO_DATE()C.STR_TO_DATE()D.CASTASDATE答案:B解析:TO_DATE()是标准SQL的日期转换函数;TO_NUMBER()转数字;STR_TO_DATE()(MySQL特定);CASTASDATE通用但需显式类型。5.以下哪个SQL语句可以用来检查表中的数据是否为空?A.ISNULLB.ISBLANKC.EMPTY()D.ISVOID答案:A解析:ISNULL是标准SQL检查空值的语法;ISBLANK(非标准)、EMPTY()(部分数据库)、ISVOID(虚构)均不正确。二、多选题(共5题,每题3分)6.以下哪些操作会导致数据库索引失效?A.对索引列使用函数(如UPPER())B.对索引列进行排序(ORDERBY)C.表中数据量频繁增删D.对索引列使用计算表达式(如AGE+1)E.基于索引列的OR条件查询答案:A、D、E解析:-A:函数调用会破坏索引的顺序,如`UPPER(name)`无法利用`name`的索引。-B:标准SQL的`ORDERBY`可以利用索引(MySQL的`FORCEINDEX`可显式指定)。-C:频繁增删会触发索引重建,但不会立即失效。-D:计算表达式(如`AGE+1`)无法利用`AGE`的索引。-E:OR条件(如`WHEREname='A'ORname='B'`)通常无法利用单个索引(可优化为UNION)。7.以下哪些是SQL中的聚合函数?A.SUM()B.AVG()C.COUNT()D.MAX()E.FIRST()答案:A、B、C、D解析:FIRST()不是聚合函数,仅返回第一条记录的值(如`FIRST(name)`)。8.在数据仓库中,以下哪些是星型模型的组成部分?A.事实表B.维度表C.转换表D.聚集表E.源表答案:A、B解析:星型模型包含中心事实表和围绕的维度表,其他选项(转换表、聚集表、源表)是通用ETL概念或特定优化。9.以下哪些SQL语句可以用来优化查询性能?A.使用合适的索引B.避免在WHERE子句中使用函数C.将大表拆分为小表D.使用JOIN代替子查询E.延迟查询(如使用LIMIT分页)答案:A、B、C、D解析:-A:索引是查询优化的核心。-B:函数调用会全表扫描(如`WHEREUPPER(name)='A'`)。-C:拆分大表可减少单表数据量,提升性能。-D:JOIN通常比子查询更高效(尤其是DERIVEDTABLE)。-E:延迟查询(如`LIMIT100`分页)是应用层面的优化,非SQL本身。10.以下哪些是SQL中的窗口函数?A.SUM()B.RANK()C.AVG()OVER()D.MAX()E.FIRST_VALUE()答案:B、C、E解析:SUM()和MAX()是聚合函数;RANK()、AVG()OVER()、FIRST_VALUE()是窗口函数(支持分区和偏移)。三、填空题(共5题,每题2分)11.在SQL中,使用______子句可以限制查询结果的返回行数。答案:LIMIT解析:通用语法(MySQL/PostgreSQL),SQLServer使用`TOP`,Oracle使用`ROWNUM`。12.以下SQL语句可以计算每个部门的平均工资:sqlSELECTdepartment,AVG(salary)______(department);答案:GROUPBY解析:聚合函数需配合`GROUPBY`按分组字段统计。13.在MySQL中,使用______引擎可以支持事务和行级锁。答案:InnoDB解析:InnoDB是默认支持ACID和行锁的引擎;MyISAM仅支持表锁。14.以下SQL语句可以查找工资最高和最低的员工:sqlSELECTMAX(salary),______(salary)FROMemployees;答案:MIN解析:对同一列使用多个聚合函数时,无需重复`salary`。15.在数据建模中,______是一种将事实表扩展为多个维度表的简化模型。答案:星型模型解析:星型模型通过事实表和维度表简化查询,对比雪花模型的复杂关联。四、简答题(共3题,每题5分)16.简述SQL中JOIN和SELFJOIN的区别,并举例说明适用场景。答案:-JOIN:连接两个或多个表,基于共同的字段或条件。-适用场景:关联不同表数据(如连接订单表和客户表)。-示例:sqlSELECTo.order_id,FROMordersoJOINcustomerscONo.customer_id=c.id;-SELFJOIN:表自身连接,通过添加别名区分不同实例。-适用场景:比较同一表内不同行的数据(如员工层级关系)。-示例:sqlSELECTASmanager,ASemployeeFROMemployeese1JOINemployeese2ONe1.id=e2.manager_id;17.解释SQL中索引失效的常见原因,并说明如何避免。答案:-常见原因:1.函数调用:如`WHEREUPPER(column)=value`无法利用索引。2.计算表达式:如`WHEREcolumn1+column2=value`。3.OR条件:单个索引通常无法处理OR(如`WHEREcolumn1='A'ORcolumn2='B'`)。4.部分索引:仅部分列使用索引(如`WHEREcolumn1='A'ANDcolumn2='B'`)。5.数据类型不匹配:如字符串与数字比较(`WHEREcolumn=123`,但column是VARCHAR)。6.排序(ORDERBY):非索引列排序会额外扫描。-避免方法:1.优化WHERE子句:避免函数调用(如`WHEREcolumnIN('A','B')`优于`WHEREUPPER(column)IN('A','B')`)。2.使用FORCEINDEX(MySQL):显式指定索引(如`FORCEINDEX(idx_col)`)。3.拆分OR条件:使用UNION(如`WHEREcolumn1='A'UNIONWHEREcolumn2='B'`)。4.创建部分索引:如`CREATEINDEXidx_col1ONtable(col1)WHEREcol1='A'`。18.描述数据仓库中ETL过程的三个主要步骤及其作用。答案:1.抽取(Extract):从源系统(如业务数据库、日志文件)读取数据。-作用:确保数据来源的完整性和多样性(如数据库、API、CSV)。2.转换(Transform):清洗、整合、计算数据,使其符合目标模型。-作用:-处理缺失值(如填充默认值)。-统一格式(如日期格式化)。-计算衍生指标(如`sales_tax=sales0.05`)。-主题域建模(如用户画像、商品分类)。3.加载(Load):将处理后的数据写入目标仓库(如星型/雪花模型表)。-作用:-提供持久化存储(如InnoDB/Parquet)。-支持查询(如通过索引优化)。-分层存储(如增量加载到临时表再汇总)。五、编程题(共2题,每题10分)19.假设有以下员工表(employees)和部门表(departments),写出SQL查询:-employees:id(主键),name,salary,department_id(外键)-departments:id(主键),name要求:1.查询每个部门的平均工资,只显示平均工资高于20000的部门。2.查询平均工资最高的部门及其员工人数。答案:sql--1.查询平均工资>20000的部门SELECTAS部门名,AVG(e.salary)AS平均工资FROMemployeeseJOINdepartmentsdONe.department_id=d.idGROUPBYHAVINGAVG(e.salary)>20000;--2.查询平均工资最高的部门及其员工人数SELECTAS部门名,AVG(e.salary)AS平均工资,COUNT(e.id)AS员工人数FROMemployeeseJOINdepartmentsdONe.department_id=d.idGROUPBYORDERBYAVG(e.salary)DESCLIMIT1;20.假设有订单表(orders)和订单项表(order_items),结构如下:-orders:id(主键),customer_id,order_date-order_items:id(主键),order_id(外键),product_id,quantity要求:1.查询2026年每个产品的总销量(数量)。2.查询每个客户的订单数量,并按订单数量降序排列,只显示前5名客户。答案:sql--1.查询2026年每个产品的总销量SELECTduct_idAS产品ID,SUM(oi.quantity)AS总销量FROMorder_itemsoiJOINo

温馨提示

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

评论

0/150

提交评论