众邦银行数据开发(武汉)笔试题

填空题

  1. 客户的存款属于银行的        负债  (资产/负债)。

  1. 银行的年终结算是将    各项收入、支出、利润   科目的余额置0。

  1. 在oracle中将某个日期字段从YYYY-MM-DD的格式转成YYYYMMDD的格式使用转化方式为           to_char  (字段,YYYYMMDD)              

  1. 删除某个服务器/dw 目录下1.txt文件的前2行数据的命令为    sed -i '1,2d' /dw/1.tx    

  1. 数据处理分为联机事物处理OLTP与      olap                        

简答题

  1. 简述oracle中loop join和hash join的使用场景。

loop join:

1. 两个表的列,进行非等值筛选;

2. 两个表的数据量,相差很大,并且表连接的列都是有索引的,这个时候的等值连接就不会变成hash join,而是会使用nl嵌套连接。

hash join:

两个表格列的等值筛选

  1. 贷款放款表put_info中有产品代码(prod_code)、放款日期(putout_date)、放款金额(put_amt),用一段sql统计各贷款产品每日放款金额合计及各贷款产品截止到最新放款日期累计放款金额。

Prod_code

Putout_date

Put_amt

A

2022/1/1

100

B

2022/1/1

100

B

2022/1/3

100

A

2022/1/4

100

A

2022/1/5

100

SELECT Prod_code,

       Putout_date,

       SUM(Put_amt) OVER (PARTITION BY Prod_code, Putout_date) AS Daily_Total_Amount,

       SUM(Put_amt) OVER (PARTITION BY Prod_code ORDER BY Putout_date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS Cumulative_Amount

FROM put_info

ORDER BY Prod_code, Putout_date;

  1. 有还款计划表数据如下(一笔借据共分12期),用sql统计最大连续逾期期数。

结清状态:Y(结清)N(未结清)

Duebillno

Term

Bill_date

Bill_amt

Unpay_amt

Finish_date

Status

jjh_1

1

2021/1/1

1000

0

2021/1/1

Y

jjh_1

2

2021/2/1

1000

0

2021/2/1

Y

jjh_1

3

2021/3/1

1000

1000

N

jjh_1

4

2021/4/1

1000

1000

N

jjh_1

5

2021/5/1

1000

1000

N

jjh_1

6

2021/6/1

1000

0

2021/6/1

Y

jjh_1

7

2021/7/1

1000

0

2021/7/1

Y

jjh_1

8

2021/8/1

1000

0

2021/8/1

Y

jjh_1

9

2021/9/1

1000

0

2021/9/1

Y

jjh_1

10

2021/10/1

1000

0

2021/10/1

Y

jjh_1

11

2021/11/1

1000

0

2021/11/1

Y

jjh_1

12

2021/12/1

1000

1000

N

WITH cte AS (

  SELECT Duebillno, Term, Status,

         ROW_NUMBER() OVER (PARTITION BY Duebillno, Status ORDER BY Term) AS rn

  FROM repayment_plan

)

SELECT Duebillno, MAX(rn) AS Max_Overdue_Period

FROM (

  SELECT Duebillno, Term, Status,

         ROW_NUMBER() OVER (PARTITION BY Duebillno ORDER BY Term) - rn AS grp

  FROM cte

) t

WHERE Status = 'N'

GROUP BY Duebillno, grp;

  1. 现有拉链表数据如下,由于2022-01-11这天的数据错误,需要重新加载2022-01-11号数据,请用sql将拉链表数据还原到2022-01-10

Name

Bal

Eff_dt

End_dt

张三

100

2022/1/1

2022/1/3

张三

90

2022/1/4

2022/1/10

张三

200

2022/1/11

9999/12/31

INSERT OVERWRITE INTO your_table PARTITION(Eff_dt=’ 2022/1/10’)

SELECT Name, Bal, Eff_dt, End_dt

FROM your_table

WHERE Eff_dt <= '2022/1/10'

Union

SELECT Name, Bal, Eff_dt, ‘9999/12/31’End_dt

FROM your_table

WHERE Eff_dt = '2022/1/11' and Eff_dt <> '9999/12/31'

  1. 一般数仓层级分为缓冲层(源系统当日抽取数据),贴源层(源系统数据的历史存储),模型层(汇总分类数据),共性层(下游公共使用或常用的指标数据),应用层(如各类集市等等),数仓的调度任务较多的情况下(超过1万个数据加工任务),请叙述下表级依赖和层级依赖的各自优缺点,并注明你的选择与理由。

表级依赖:

优点:对于简单的数据仓库环境和少量的数据加工任务,表级依赖可以更容易管理和维护。

缺点:当数据加工任务较多时,表级依赖会导致依赖关系交织复杂,难以管理。同时,当数据仓库中的数据模型发生变化时,需要手动更新所有受影响的任务,工作量较大。

层级依赖:

优点:层级依赖通过将数据加工任务按照层级进行划分,减少了任务之间的直接依赖关系,使整个数据加工过程更加结构化和清晰。当数仓中任务数量较多时,层级依赖可以更好地管理任务之间的关系。

缺点:对于简单的数据仓库环境和少量的数据加工任务,层级依赖可能显得过于繁琐.

我的选择与理由: 在数仓的调度任务较多的情况下,我会选择层级依赖。对于较大规模的数据仓库来说,它能够更好地管理任务之间的关系,使整个数据加工过程更加结构化和清晰。

  • 28
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一凡888

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值