Advertisement
Guest User

Untitled

a guest
Dec 15th, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 6.52 KB | None | 0 0
  1. DATA PRO.Tabela;
  2.  
  3. SET Pro.Loan;
  4.  
  5. IF STATUS='A' OR STATUS='C' THEN loan_status=0;
  6.  
  7. ELSE loan_status=1;
  8.  
  9. run;
  10.  
  11. proc sort DATA=Pro.Tabela;
  12.  
  13. BY STATUS;
  14.  
  15. run;
  16.  
  17. DATA pro.client_disp;
  18.  
  19. MERGE pro.client(IN=a) pro.disp(IN=b);
  20.  
  21. BY client_id;
  22.  
  23. IF a=b;
  24.  
  25. run;
  26.  
  27. proc sort DATA=pro.tabela;
  28.  
  29. BY account_id;
  30.  
  31. run;
  32.  
  33. proc sort DATA=pro.account;
  34.  
  35. BY account_id;
  36.  
  37. run;
  38.  
  39. DATA pro.client_account;
  40.  
  41. MERGE pro.client_disp(IN=a) pro.account(IN=b);
  42.  
  43. BY account_id;
  44.  
  45. IF a=b;
  46.  
  47. run;
  48.  
  49. proc SQL;
  50.  
  51. CREATE TABLE pro.account_client AS SELECT * FROM pro.client_account WHERE TYPE='OWNER';
  52.  
  53. quit;
  54.  
  55. DATA pro.tabela_a; /*tabela na razie wystarczy */
  56.  
  57. MERGE pro.tabela(IN=b RENAME=(DATE=credit_date)) pro.account_client(IN=c);
  58.  
  59. BY account_id;
  60.  
  61. IF b;
  62.  
  63. run;
  64.  
  65. DATA pro.tabela_a;
  66.  
  67. SET pro.tabela_a;
  68.  
  69. IF(birth_number-(round(birth_number/10000))*10000)<0 THEN sex=1; /*kobieta*/
  70.  
  71. ELSE sex=0;
  72.  
  73. age=YEAR(credit_date)-(1900+round(birth_number/10000));
  74.  
  75. client_since=round((credit_date-DATE)/12);
  76.  
  77. run;
  78.  
  79. proc sort DATA=pro.trans;
  80.  
  81. BY account_id;
  82.  
  83. run;
  84.  
  85. proc sort DATA=pro.loan;
  86.  
  87. BY account_id;
  88.  
  89. run;
  90.  
  91. DATA pro.trans_cred;
  92.  
  93. MERGE pro.loan(IN=a RENAME=(DATE=credit_date)) pro.trans(IN=b);
  94.  
  95. BY account_id;
  96.  
  97. IF a=b;
  98.  
  99. run;
  100.  
  101. DATA pro.trans_cred;
  102.  
  103. SET pro.trans_cred;
  104.  
  105. WHERE DATE < credit_date;
  106.  
  107. run;
  108.  
  109. DATA pro.trans_cred_30;
  110.  
  111. SET pro.trans_cred;
  112.  
  113. WHERE DATE < credit_date AND DATE > (credit_date -30);
  114.  
  115. run;
  116.  
  117. DATA pro.trans_cred_60;
  118.  
  119. SET pro.trans_cred;
  120.  
  121. WHERE DATE < credit_date AND DATE > (credit_date -60);
  122.  
  123. run;
  124.  
  125. DATA pro.trans_cred_90;
  126.  
  127. SET pro.trans_cred;
  128.  
  129. WHERE DATE < credit_date AND DATE > (credit_date -90);
  130.  
  131. run;
  132.  
  133. DATA pro.balance;
  134.  
  135. SET pro.trans_cred;
  136.  
  137. BY account_id;
  138.  
  139. IF LAST.account_id THEN output;
  140.  
  141. keep account_id balance;
  142.  
  143. run;
  144.  
  145. DATA pro.credits_30;
  146.  
  147. SET pro.trans_cred_30(WHERE=(TYPE='PRIJEM'));
  148.  
  149. BY account_id;
  150.  
  151. IF FIRST.account_id THEN sum_credit_30=0;
  152.  
  153. sum_credit_30+amount;
  154.  
  155. IF LAST.account_id THEN output;
  156.  
  157. keep account_id sum_credit_30;
  158.  
  159. run;
  160.  
  161. DATA pro.credits_60;
  162.  
  163. SET pro.trans_cred_60(WHERE=(TYPE='PRIJEM'));
  164.  
  165. BY account_id;
  166.  
  167. IF FIRST.account_id THEN sum_credit_60=0;
  168.  
  169. sum_credit_60+amount;
  170.  
  171. IF LAST.account_id THEN output;
  172.  
  173. keep account_id sum_credit_60;
  174.  
  175. run;
  176.  
  177. DATA pro.credits_90;
  178.  
  179. SET pro.trans_cred_90(WHERE=(TYPE='PRIJEM'));
  180.  
  181. BY account_id;
  182.  
  183. IF FIRST.account_id THEN sum_credit_90=0;
  184.  
  185. sum_credit_90+amount;
  186.  
  187. IF LAST.account_id THEN output;
  188.  
  189. keep account_id sum_credit_90;
  190.  
  191. run;
  192.  
  193. DATA pro.withdrawn_30;
  194.  
  195. SET pro.trans_cred_30(WHERE=(TYPE='VYDAJ'));
  196.  
  197. BY account_id;
  198.  
  199. IF FIRST.account_id THEN sum_withdrawn_30=0;
  200.  
  201. sum_withdrawn_30+amount;
  202.  
  203. IF LAST.account_id THEN output;
  204.  
  205. keep account_id sum_withdrawn_30;
  206.  
  207. run;
  208.  
  209. DATA pro.withdrawn_60;
  210.  
  211. SET pro.trans_cred_60(WHERE=(TYPE='VYDAJ'));
  212.  
  213. BY account_id;
  214.  
  215. IF FIRST.account_id THEN sum_withdrawn_60=0;
  216.  
  217. sum_withdrawn_60+amount;
  218.  
  219. IF LAST.account_id THEN output;
  220.  
  221. keep account_id sum_withdrawn_60;
  222.  
  223. run;
  224.  
  225. DATA pro.withdrawn_90;
  226.  
  227. SET pro.trans_cred_90(WHERE=(TYPE='VYDAJ'));
  228.  
  229. BY account_id;
  230.  
  231. IF FIRST.account_id THEN sum_withdrawn_90=0;
  232.  
  233. sum_withdrawn_90+amount;
  234.  
  235. IF LAST.account_id THEN output;
  236.  
  237. keep account_id sum_withdrawn_90;
  238.  
  239. run;
  240.  
  241. DATA pro.tabela_a;
  242.  
  243. MERGE pro.tabela_a(IN=a) pro.balance(IN=b);
  244.  
  245. BY account_id;
  246.  
  247. IF a=b;
  248.  
  249. run;
  250.  
  251. DATA pro.tabela_a;
  252.  
  253. MERGE pro.tabela_a(IN=a) pro.credits_30(IN=b);
  254.  
  255. BY account_id;
  256.  
  257. IF a;
  258.  
  259. run;
  260.  
  261. DATA pro.tabela_a;
  262.  
  263. MERGE pro.tabela_a(IN=a) pro.credits_60(IN=b);
  264.  
  265. BY account_id;
  266.  
  267. IF a;
  268.  
  269. run;
  270.  
  271. DATA pro.tabela_a;
  272.  
  273. MERGE pro.tabela_a(IN=a) pro.credits_90(IN=b);
  274.  
  275. BY account_id;
  276.  
  277. IF a;
  278.  
  279. run;
  280.  
  281. DATA pro.tabela_a;
  282.  
  283. MERGE pro.tabela_a(IN=a) pro.withdrawn_30(IN=b);
  284.  
  285. BY account_id;
  286.  
  287. IF a;
  288.  
  289. run;
  290.  
  291. DATA pro.tabela_a;
  292.  
  293. MERGE pro.tabela_a(IN=a) pro.withdrawn_60(IN=b);
  294.  
  295. BY account_id;
  296.  
  297. IF a;
  298.  
  299. run;
  300.  
  301. DATA pro.tabela_a;
  302.  
  303. MERGE pro.tabela_a(IN=a) pro.withdrawn_90(IN=b);
  304.  
  305. BY account_id;
  306.  
  307. IF a;
  308.  
  309. run;
  310.  
  311. DATA pro.tabela_a;
  312.  
  313. SET pro.tabela_a;
  314.  
  315. IF frequency='POPLATEK MESICNE' THEN freq_issuance=1;
  316.  
  317. ELSE IF frequency='POPLATEK TYDNE' THEN freq_issuance=2;
  318.  
  319. ELSE freq_issuance=0;
  320.  
  321. run;
  322.  
  323. proc SQL;
  324.  
  325. CREATE TABLE pro.account_client_d AS SELECT * FROM pro.account_client ORDER BY district_id;
  326.  
  327. quit;
  328.  
  329. DATA pro.client_district;
  330.  
  331. MERGE pro.account_client_d(IN=a) pro.district(IN=b RENAME=(A1=district_id));
  332.  
  333. BY district_id;
  334.  
  335. IF a=b;
  336.  
  337. run;
  338.  
  339. DATA pro.client_district;
  340.  
  341. SET pro.client_district(RENAME=(A11=avg_salary A12=unempl_rate_95 A13=unempl_rate_96 A14=enterpr_rate));
  342.  
  343. keep account_id avg_salary unempl_rate_95 unempl_rate_96 entepr_rate;
  344.  
  345. run;
  346.  
  347. proc SQL;
  348.  
  349. CREATE TABLE pro.client_distr AS SELECT * FROM pro.client_district ORDER BY account_id;
  350.  
  351. quit;
  352.  
  353. DATA pro.tabela_a;
  354.  
  355. MERGE pro.tabela_a(IN=a) pro.client_distr(IN=b);
  356.  
  357. BY account_id;
  358.  
  359. IF a=b;
  360.  
  361. run;
  362.  
  363. DATA pro.tabela_a;
  364.  
  365. SET pro.tabela_a;
  366.  
  367. IF (YEAR(credit_date)<1996) THEN unempl_rate=unempl_rate_95;
  368.  
  369. ELSE unempl_rate=unempl_rate_96;
  370.  
  371. DROP unempl_rate_95 unempl_rate_96;
  372.  
  373. run;
  374.  
  375. proc SQL;
  376.  
  377. CREATE TABLE pro.cards AS SELECT * FROM pro.card ORDER BY disp_id;
  378.  
  379. quit;
  380.  
  381. DATA pro.account_card;
  382.  
  383. MERGE pro.account_client(IN=a) pro.cards(IN=b RENAME=(TYPE=card_type));
  384.  
  385. BY disp_id;
  386.  
  387. IF a=b;
  388.  
  389. keep disp_id card_type issued;
  390.  
  391. run;
  392.  
  393. DATA pro.tabela_a;
  394.  
  395. MERGE pro.tabela_a(IN=a) pro.account_card(IN=b);
  396.  
  397. BY disp_id;
  398.  
  399. IF a;
  400.  
  401. run;
  402.  
  403. DATA pro.tabela_a;
  404.  
  405. SET pro.tabela_a;
  406.  
  407. IF card_type='golden' AND issued<credit_date THEN type_of_card=3;
  408.  
  409. ELSE IF card_type='classic' AND issued<credit_date  THEN type_of_card=2;
  410.  
  411. ELSE IF card_type='junior' AND issued<credit_date THEN type_of_card=1;
  412.  
  413. ELSE type_of_card=0;
  414.  
  415. DROP card_type issued;
  416.  
  417. run;
  418.  
  419. DATA pro.insurrance_30;
  420.  
  421. SET pro.trans_cred_30(WHERE=(k_symbol='POJISTNE'));
  422.  
  423. BY account_id;
  424.  
  425. IF FIRST.account_id THEN insurrance_30=0;
  426.  
  427. insurrance_30+amount;
  428.  
  429. IF LAST.account_id THEN output;
  430.  
  431. keep account_id insurrance_30;
  432.  
  433. run;
  434.  
  435. DATA pro.insurrance_90;
  436.  
  437. SET pro.trans_cred_90(WHERE=(k_symbol='POJISTNE'));
  438.  
  439. BY account_id;
  440.  
  441. IF FIRST.account_id THEN insurrance_90=0;
  442.  
  443. insurrance_90+amount;
  444.  
  445. IF LAST.account_id THEN output;
  446.  
  447. keep account_id insurrance_90;
  448.  
  449. run;
  450.  
  451. DATA pro.tabela_a;
  452.  
  453. MERGE pro.tabela_a(IN=a) pro.insurrance_30(IN=b);
  454.  
  455. BY account_id;
  456.  
  457. IF a;
  458.  
  459. run;
  460.  
  461. DATA pro.tabela_a;
  462.  
  463. MERGE pro.tabela_a(IN=a) pro.insurrance_90(IN=b);
  464.  
  465. BY account_id;
  466.  
  467. IF a;
  468.  
  469. run;
  470.  
  471. DATA pro.tabela_a;
  472.  
  473. SET pro.tabela_a;
  474.  
  475. IF insurrance_30='.' THEN insurrance_30=0;
  476.  
  477. IF insurrance_90='.' THEN insurrance_90=0;
  478.  
  479. run;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement