数据服务面试题
- 有一个录取学生人数表,记录的是每年录取学生人数和入学学生的学制
以下是表结构:
CREATE TABLE `admit` ( |
year表示学生入学年度
num表示对应年度录取学生人数
stu_len表示录取学生的学制
说明:例如录取年度2018学制3,表示该批学生在校年份为2018~2019、2019~2020、2020~2021
以下是示例数据:
id | year | num | stu_len |
1 | 2018 | 2000 | 3 |
2 | 2019 | 2000 | 3 |
3 | 2020 | 1000 | 4 |
4 | 2020 | 2000 | 3 |
根据以上示例计算出每年在校人数,写出SQL语句:
SQL UNION ALL SELECT YEAR+1,num,stu_len-1 FROM t WHERE stu_len >= 2) SELECT YEAR,SUM(num) in_school_num FROM t GROUP BY YEAR |
计算结果截图:
|
- 简述一下Mysql的索引
主键索引:在创建表格的时候,添加了主键约束,那么就会自动生成主键索引 通过主键约束的创建,来生成这个主键索引 唯一索引: 2.1 在创建表格的时候,会根据唯一约束自动的生成唯一索引 2.2 在没有约束的前提下,手动创建唯一索引,唯一索引不会反过去创建唯一约束 普通索引:这个列经常需要被查询,但是这个列又没有什么特点 组合索引:和普通索引相同,有多个列需要同时被查询,但是这些列也没有什么特点,那么就放在一起,创建一个组合索引 函数索引:如果你的列,是需要被使用函数计算之后再用来查询,那么计算过程需要被写在索引里面 位图索引:列的内容是由大量的重复的内容组成的 bitmap |
- Mysql插入数据的方式有多少种,分别的哪些:
INSERT INTO ... SELECT LOAD DATA INFILE INSERT IGNORE和INSERT ON DUPLICATE KEY UPDATE
|
- 内连接、自连接、外连接(左、右、全)、交叉连接的区别
拼接左右两个表格,显示两个表格连接列共同拥有的数据 左连接 left [outer] join: 首先先显示左右两个表格所有的共同数据,然后再显示左边那边表独有的数据,因为右边没有匹配数据,所以显示为空 右连接 right [outer] join:刚好和左连接相反,首先先显示左右两个表格所有的共同数据,然后再显示右边那边表独有的数据,因为左边没有匹配数据,所以显示为空 全连接 full [outer] join:先显示两个表的共同数据,然后再显示左边表的独有数据,右边没有匹配就显示为空,然后再显示右边表的独有数据,左边没有匹配就显示为空。 . 自然连接(*natural join)* 自然连接不用指定连接列,也不能使用ON语句,它默认比较两张表里相同的列, 交叉连接(cross join):相当与笛卡尔积,左表和右表组合
|
- 说一下你对数仓分层的理解
1.清晰数据结构: 2.复杂问题简单化 3.便于维护
通常将数据仓库分为三层: 源数据层(ODS) 此层数据无任何更改,直接沿用外围系统数据结构和数据,不对外开放;为临时存储层,是接口数据的临时存储区域,为后一步的数据处理做准备。 数据仓库层(DW) DW 层的数据应该是一致的、准确的、干净的数据,即对源系统数据进行了清洗(去除了杂质)后的数据。 此层可以细分为两层: 明细层DWD(Data Warehouse Detail):存储明细数据,此数据是最细粒度的事实数据。该层一般保持和ODS层一样的数据粒度,并且提供一定的数据质量保证。同时,为了提高数据明细层的易用性,该层会采用一些维度退化手法,将维度退化至事实表中,减少事实表和维表的关联。 业务层DWS(Data WareHouse Service):存储宽表数据,此层数据是针对某个业务领域的聚合数据,应用层的数据通常来源与此层,为什么叫宽表,主要是为了应用层的需要在这一层将业务相关的所有数据统一汇集起来进行存储,方便业务层获取。此层数据通常来源与DWD和DWM层的数据。 数据应用层(ads) 前端应用直接读取的数据源;根据报表、专题分析的需求而计算生成的数据。
|
- 对高校的业务系统了解多少,有没有处理高校数据的经验
暂无处理学校数据的经验,但在校是班长
|