全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4694 5
2018-10-11
悬赏 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步的表的横向连接、汇总函数和非关联子查询。


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2018-10-13 21:40:56
还要补充什么嘛?大家可以提一下思路,一起讨论一下
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

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;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-11-18 22:13:25
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数据集代表什么啊?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-11-18 22:13:56
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数据集代表什么啊?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2019-1-2 14:40:11
胚豪胚嚼朽酉 发表于 2018-11-18 22:13
只有loans和trans数据集,c数据集代表什么啊?
c是子查询中的trans表,是求最大交易日期的一个子查询
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群