4312 5

[作业] SAS大赛的练习题 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

高中生

75%

还不是VIP/贵宾

-

威望
0
论坛币
687 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
185 点
帖子
7
精华
0
在线时间
62 小时
注册时间
2016-12-24
最后登录
2022-3-14

4论坛币

PROC SQL过程和转置试题

[背景介绍]

该数据取自银行系统的贷款表和交易流水表,字段说明如下:

贷款表(Loans):

每条记录代表某个账户的上的一条贷款信息,条数:682

  

贷款表(Loans)

  
  

名称

  
  

标签

  
  

说明

  
  

disp_id

  
  

权限号

  
  
  
  

loan_id

  
  

贷款号

  
  

(主键)

  
  

account_id

  
  

账户号

  
  
  
  

date

  
  

发放贷款日期

  
  

amount

  
  

贷款金额

  
  
  
  

duration

  
  

贷款期限

  
  
  
  

payments

  
  

每月归还额

  
  
  
  

status

  
  

还款状态

  
  

A代表合同终止,没问题;B代表合同终止,贷款没有支付;C代表合同处于执行期,至今正常;D代表合同处于执行期,欠债状态。

  

交易表 (Trans):

每条记录代表每个账户上的一条交易,条数:1056320

  

交易表 (Trans)

  
  

名称

  
  

标签

  
  

trans_id

  
  

交易序号(主键)

  
  

account_id

  
  

发起交易的账户号

  
  

date

  
  

交易日期

  
  

type

  
  

借贷类型

  
  

operation

  
  

交易类型

  
  

amount

  
  

金额

  
  

balance

  
  

账户余额

  
  

K_Symbol

  
  

交易特征

  
  

bank

  
  

对方银行

  
  

account

  
  

对方账户号

  

两张表的连接关系如下:

图1

[题目要求]

根据上文提供的材料,获取每个贷款账号贷款发放前的帐户余额(即贷款前最后一次交易的帐户余额),如果贷款前最后有交易的一天有多笔交易,则取帐户余额的均值。表的效果如下:

使用一条SQL语句得到完全一致的结果和展示效果,需要给变量加标签。



说明: 图2

1)展现的变量分别是loan_id(来自贷款loan表的loan_id,date(来自贷款loan表的date),tran_date(来自交易trans表的date,amount(来自贷款loan表的amount,avg_balance(来自交易trans表的balance;

2)每笔贷款有一条记录,没有贷款则没有记录

3)使用到了Proc SQL步的表的横向连接、汇总函数和非关联子查询。


关键词:提供的材料 合同终止 银行系统 账户余额 展示效果
还要补充什么嘛?大家可以提一下思路,一起讨论一下

使用道具

藤椅
glmswufe 发表于 2018-11-15 16:45:54 |只看作者 |坛友微信交流群
proc sql;
create table test as
select distinct  b.loan_id  '贷款号',b.date '发放贷款日期',a.date as tran_date '交易日期',b.amount '贷款金额',avg(balance) as avg_balance '账户余额'
from trans a ,loans b where a.account_id=b.account_id
and  a.date = (select max(c.date) from trans c where a.account_id=c.account_id and c.date<b.date)
group by b.loan_id order by loan_id;
quit;

使用道具

glmswufe 发表于 2018-11-15 16:45
proc sql;
create table test as
select distinct  b.loan_id  '贷款号',b.date '发放贷款日期',a.date a ...
只有loans和trans数据集,c数据集代表什么啊?

使用道具

glmswufe 发表于 2018-11-15 16:45
proc sql;
create table test as
select distinct  b.loan_id  '贷款号',b.date '发放贷款日期',a.date a ...
只有loans和trans数据集,c数据集代表什么啊?

使用道具

地板
glmswufe 发表于 2019-1-2 14:40:11 |只看作者 |坛友微信交流群
胚豪胚嚼朽酉 发表于 2018-11-18 22:13
只有loans和trans数据集,c数据集代表什么啊?
c是子查询中的trans表,是求最大交易日期的一个子查询

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-20 08:28