【数据挖掘】恒生金融有限公司2023届秋招数据ETL工程师笔试题解析

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 恒生科技2022年9月24号数据ETL工程师岗位的笔试题目及答案汇总,包括了SQL选择题、SQL编程题和业务应用SQL编程题,涵盖了数据库基础知识、SQL语句编写以及数据仓库概念等多个方面。

公司:恒生科技

笔试时间:2022年9月24号

岗位:数据ETL工程师

时间:120分钟

1 不定项选择题

1、SQL 修改表结构的关键词是

A. alter
B. create
C. desc
D. rename

答案:A

2、正确的是

A. 一个表中,主键可以唯标识一行记录
B. 一个事务中的某条sql 命提交时,其他sql命令可以不提交
C. 一个关系表的外键必定是另一个表的主键
D. 回滚可以在任务失败时,回到操作是五千的数据状态

答案:A,C,D

解析:

B错误

4、数据集市和数据仓库的区别

解析:

(1)数据仓库:基于整个企业的数据模型建立,面向企业范围内的主题;
数据集市:按照某一特定部门的数据模型建立的,由于每个部门有自己特定的需求,因此,他们对数据集市的期望也不同。 部门主题与企业主题之间可能存在关联,也可能不存在。

(2)数仓存储整个企业内非常详细的数据;数据集市数据详细程度低一些,包含概要和综合数据多一些。
(3)数据集市的数据组织一般采用星形模型。大型数仓的数据组织,星形或雪花形都可以。
(4)数据集市较少保留历史数据。

6、正确的是

A. 事务特性为原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)
B. 可重复读会导致脏读
C. 序列化级别最高
D. SQL可以动态调整事务隔离级别

答案:A,C,D

7、为了检查查询,而又不增加数据的存储空间,常用的方法是创建

答案:视图

9、数据仓库常见的模型分为

A. 星型模型
B. 雪花型模型

答案:A,B

10、典型的元数据包括

A. 数据仓库的表结构
B. 数据仓库表的属性
C. 数据仓库的数据源
D. 源数据到数据仓库的映射
E. 数据模型的规格说明
F. 抽取日志
G. 访问数据的公共例行程序

答案:ABCDE是正确的,F,G不知道是否正确

解析:

元数据(Metadata)是关于数据的数据。在数据仓库系统中,元数据是描述数据仓库内数据的结构和建立方法的数据,可将其按用途的不同分为两类:技术元数据(Technical Metadata);业务元数据(Business Metadata)

技术元数据:
  技术元数据是存储关于数据仓库系统技术细节的数据,是用于开发和管理数据仓库使用的数据,它主要包括以下信息:数据仓库结构的描述,包括仓库模式、视图、维、层次结构和导出数据的定义,以及数据集市的位置和内容;业务系统、数据仓库和数据集市的体系结构和模式,汇总用的算法,包括度量和维定义算法,数据粒度、主题领域、聚集、汇总、预定义的查询与报告;由操作环境到数据仓库环境的映射,包括源数据和它们的内容、数据分割、数据提取、清理、转换规则和数据刷新规则、安全(用户授权和存取控制)。

业务元数据:
  业务元数据从业务角度描述了数据仓库中的数据,它提供了介于使用者和实际系统之间的语义层,使得不懂计算机技术的业务人员也能够“读懂”数据仓库中的数据。业务元数据主要包括以下信息:使用者的业务术语所表达的数据模型、对象名和属性名;访问数据的原则和数据的来源;系统所提供的分析方法以及公式和报表的信息;具体包括以下信息:

企业概念模型:这是业务元数据所应提供的重要的信息,它表示企业数据模型的高层信息、整个企业的业务概念和相互关系。以这个企业模型为基础,不懂数据库技术和SQL语句的业务人员对数据仓库中的数据也能做到心中有数。
多维数据模型:这是企业概念模型的重要组成部分,它告诉业务分析人员在数据集市当中有哪些维、维的类别、数据立方体以及数据集市中的聚合规则。这里的数据立方体表示某主题领域业务事实表和维表的多维组织形式。业务概念模型和物理数据之间的依赖:以上提到的业务元数据只是表示出了数据的业务视图,这些业务视图与实际的数据仓库或数据库、多维数据库中的表、字段、维、层次等之间的对应关系也应该在元数据知识库中有所体现。

2 SQL编程题

1、连接查询

答案:

SELECT * FROM A JOIN B ON A.ID = B .ID

2、删除重复行,只保留一条记录

delete from 表名
where 
重复字段名 in (
     SELECT a.重复字段名from(
     select 重复字段名
     from 表名
     group by 重复字段名 having count(1) > 1
     ) a
 )
 and 
 id(只保留id最小的一个) not in (
 SELECT b.id from(
     select min(id) as id
     from 表名 
     group by 重复字段名 having count(1)>1
     ) b
 )

3、将竖表Table_A转换为横表Table_B
在这里插入图片描述

在这里插入图片描述

(1)方法一:聚合函数[max或sum]配合case语句

select 姓名,
sum (case 课程 when '语文' then 成绩 else 0 end) as 语文,
sum (case 课程 when '数学' then 成绩 else 0 end) as 数学,
sum (case 课程 when '英语' then 成绩 else 0 end) as 英语
from Table_A
group by 姓名

(2)方法二:使用pivot

select * from Table_A pivot (max(成绩)for 课程 in(语文,数学,英语)) 临时表

PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现

PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (…) )AS P

参考:https://www.cnblogs.com/liushen/p/3333936.html

3 业务应用SQL编程题

1、 理财数据库,表结构如下

在这里插入图片描述

说明:除了Fund表的余额Fbalance字段和Investment表的投资金额Iaccount字段为number,其他字段均视为字符串

(1)查询投资过600571的这个产品且单笔投资金额不少于10000的客户的客户号和名字且按姓名降序排列

(2)给Product表新增字段Pvalue,类型未字符串,长度为32位,不允许为空

(3)在投资流水表Investment中,新建客户号、经理人工号和产品代码的唯一索引

(4)为表彰业绩优秀的经理人,请查询投资600571这个产品投资金额在平均值以上的客户的经理人的工号和姓名,现在投在600571这个产品的客户要从自己的资金账户统一追加投资5000元,请操作相关的表。

解析:我自己写的答案,不保证正确性

1、SELECT  client.Cno,cilent.Cname FROM cilent JOIN Investment ON client.Cno = Client.Cno WHERE Investment.Iaccount>10000 AND Investment.Pno ='600571' ORDER BY Client.Cname DESC

2、ALTER TABLE Product add Pvalue char(32) NOT NULL

3、ALTER TABLE Investment ADD UNIQUE INDEX Investment_index (Cno,Mno,Pno)

4、SELECT Manager.Mno,Manager.Mname FROM Manager JOIN Investment WHERE Investment.Pnp = '600571' and Iaccount > (select AVG(Iaccount) FROM Investment GROUP BY Cno)

UPDATE Investment  SET Iaccount =  Iaccount+5000 WHERE Pno ='600571' 
UPDATE Found INNER JOIN Client ON Client.Fno = Found.Fno SET Fbalance  = Fbalance -5000 WHERE Clinent.Cno IN (SELECT Cno FROM Investment  WHERE Pno='600571' )

2、表结构如下

说明:TradeType:B–申购,S–赎回

TradeStatus:T–交易成功个,F–交易失败

TradeDate:格式为YYYYMMDD
在这里插入图片描述

回答下面问题

(1)请给用户表的用户ID增加一个唯一索引

(2)请按日统计2016年10月份各产品的交易金额(含失败),并按交易日期进行降序排序。

(3)将2016年10月31日的所有交易金额大于1000的交易状态更新为交易成功

(4)请列出所有购买过货币基金产品的客户姓名

(5)请列出2016年10鱼粉申购交易前10的产品

解析:我自己写的答案,不保证正确性

1、CREATE UNIQUE INDEX ID_index ON Users(ID)

2、SELECT Amount FROM TradeDetail WHERE month(TradeDate) = '10' and year(TradeDate)='2016' ORDER BY Amount DESC

3、UPDATE TradeDetail SET TradeStatus='T' WHERE TradeDate ='20161031' and Amount >1000

4、SELECT UserName FROM Users WHERE UserId in (SELECT UserId FROM TradeDetail JOIN Product ON TradeDetail.PrdNo = Product.PrdNo WHERE Product.PrdType='C')

5、SELECT PrdName FROM Product JOIN TradeDetail ON Product.PrdNo = TradeDate.PrdNo WHERE month(TradeDate)='10' and year(TradeDate)='2016'
目录
相关文章
|
14天前
|
数据采集 存储 JavaScript
如何使用Cheerio与jsdom解析复杂的HTML结构进行数据提取
在现代网页开发中,复杂的HTML结构给爬虫技术带来挑战。传统的解析库难以应对,而Cheerio和jsdom在Node.js环境下提供了强大工具。本文探讨如何在复杂HTML结构中精确提取数据,结合代理IP、cookie、user-agent设置及多线程技术,提升数据采集的效率和准确性。通过具体示例代码,展示如何使用Cheerio和jsdom解析HTML,并进行数据归类和统计。这种方法适用于处理大量分类数据的爬虫任务,帮助开发者轻松实现高效的数据提取。
如何使用Cheerio与jsdom解析复杂的HTML结构进行数据提取
|
15天前
|
XML JSON API
淘宝京东商品详情数据解析,API接口系列
淘宝商品详情数据包括多个方面,如商品标题、价格、图片、描述、属性、SKU(库存量单位)库存、视频等。这些数据对于买家了解商品详情以及卖家管理商品都至关重要。
|
9天前
|
存储 JSON API
Python编程:解析HTTP请求返回的JSON数据
使用Python处理HTTP请求和解析JSON数据既直接又高效。`requests`库的简洁性和强大功能使得发送请求、接收和解析响应变得异常简单。以上步骤和示例提供了一个基础的框架,可以根据你的具体需求进行调整和扩展。通过合适的异常处理,你的代码将更加健壮和可靠,为用户提供更加流畅的体验。
26 0
|
17天前
|
监控 安全 网络安全
|
17天前
|
数据库 Java 监控
Struts 2 日志管理化身神秘魔法师,洞察应用运行乾坤,演绎奇幻篇章!
【8月更文挑战第31天】在软件开发中,了解应用运行状况至关重要。日志管理作为 Struts 2 应用的关键组件,记录着每个动作和决策,如同监控摄像头,帮助我们迅速定位问题、分析性能和使用情况,为优化提供依据。Struts 2 支持多种日志框架(如 Log4j、Logback),便于配置日志级别、格式和输出位置。通过在 Action 类中添加日志记录,我们能在开发过程中获取详细信息,及时发现并解决问题。合理配置日志不仅有助于调试,还能分析用户行为,提升应用性能和稳定性。
35 0
|
17天前
|
开发者 Java
JSF EL 表达式:乘技术潮流之风,筑简洁开发之梦,触动开发者心弦的强大语言
【8月更文挑战第31天】JavaServer Faces (JSF) 的表达式语言 (EL) 是一种强大的工具,允许开发者在 JSF 页面和后台 bean 间进行简洁高效的数据绑定。本文介绍了 JSF EL 的基本概念及使用技巧,包括访问 bean 属性和方法、数据绑定、内置对象使用、条件判断和循环等,并分享了最佳实践建议,帮助提升开发效率和代码质量。
26 0
|
17天前
|
开发者 监控 开发工具
如何将JSF应用送上云端?揭秘在Google Cloud Platform上部署JSF应用的神秘步骤
【8月更文挑战第31天】本文详细介绍如何在Google Cloud Platform (GCP) 上部署JavaServer Faces (JSF) 应用。首先,确保已准备好JSF应用并通过Maven构建WAR包。接着,使用Google Cloud SDK登录并配置GCP环境。然后,创建`app.yaml`文件以配置Google App Engine,并使用`gcloud app deploy`命令完成部署。最后,通过`gcloud app browse`访问应用,并利用GCP的监控和日志服务进行管理和故障排查。整个过程简单高效,帮助开发者轻松部署和管理JSF应用。
32 0
|
17天前
|
开发者 容器 Java
Azure云之旅:JSF应用的神秘部署指南,揭开云原生的新篇章!
【8月更文挑战第31天】本文探讨了如何在Azure上部署JavaServer Faces (JSF) 应用,充分发挥其界面构建能力和云平台优势,实现高效安全的Web应用。Azure提供的多种服务如App Service、Kubernetes Service (AKS) 和DevOps简化了部署流程,并支持应用全生命周期管理。文章详细介绍了使用Azure Spring Cloud和App Service部署JSF应用的具体步骤,帮助开发者更好地利用Azure的强大功能。无论是在微服务架构下还是传统环境中,Azure都能为JSF应用提供全面支持,助力开发者拓展技术视野与实践机会。
11 0
|
17天前
|
安全 数据安全/隐私保护 架构师
用Vaadin打造坚不可摧的企业级应用:安全性考虑全解析
【8月更文挑战第31天】韩林是某金融科技公司的架构师,负责构建安全的企业级应用。在众多Web框架中,他选择了简化UI设计并内置多项安全特性的Vaadin。韩林在其技术博客中分享了使用Vaadin时的安全考虑与实现方法,包括数据加密、SSL/TLS保护、结合Spring Security的用户认证、XSS防护、CSRF防御及事务性UI更新机制。他强调,虽然Vaadin提供了丰富的安全功能,但还需根据具体需求进行调整和增强。通过合理设计,可以构建高效且安全的企业级Web应用。
28 0
|
17天前
|
开发者 Java
Play Framework深度解析:依赖注入的神秘力量,如何助力Web应用架构优化?答案即将揭晓!
【8月更文挑战第31天】依赖注入(DI)是现代软件开发的关键技术,用于分离对象创建与依赖关系,提升代码的可维护性和可测试性。Play Framework是一款高性能Java Web框架,内置了基于Google Guice的DI支持。本文探讨Play Framework中DI的最佳实践,包括定义组件、构造函数注入、字段注入以及作用域控制和自定义绑定等高级特性,帮助开发者轻松构建结构清晰、可维护性高的Web应用。
28 0

热门文章

最新文章

推荐镜像

更多