DDL, податоци, погледи : views.sql

File views.sql, 5.3 KB (added by 231068, 2 days ago)
Line 
1--Најава на корисник (Login view)
2CREATE VIEW v_user_login AS
3SELECT
4 cu.client_user_id,
5 cu.username,
6 cu.password_hash,
7 cu.status,
8 c.client_id,
9 c.first_name,
10 c.last_name,
11 c.email
12FROM Client_user cu
13JOIN Client c ON cu.client_id = c.client_id
14WHERE cu.status = 'ACTIVE';
15
16SELECT * FROM v_user_login;
17
18
19--Регистрација на корисник (Registration view)
20CREATE VIEW v_user_registration AS
21SELECT
22 c.client_id,
23 c.first_name,
24 c.last_name,
25 c.embg,
26 c.email,
27 c.phone,
28 cu.username,
29 cu.status AS user_status,
30 c.date_registered
31FROM Client c
32LEFT JOIN Client_user cu ON c.client_id = cu.client_id
33WHERE (cu.client_id IS NULL OR cu.status <> 'ACTIVE')
34 AND c.status <> 'DELETED';
35
36SELECT * FROM v_user_registration;
37
38
39
40--Извештаи (Receipt view)
41CREATE VIEW vw_client_receipts AS
42SELECT
43 r.receipt_id,
44 r.receipt_number,
45 r.print_time,
46 t.transaction_id,
47 t.amount,
48 t.transaction_date
49FROM Receipt r
50JOIN Transaction t ON t.transaction_id = r.transaction_id
51WHERE t.status = 'COMPLETED'
52 AND t.amount > 0
53 AND r.print_time IS NOT NULL;
54
55SELECT *
56FROM vw_client_receipts;
57
58
59--Рати (Loan installments view)
60CREATE VIEW v_loan_installments AS
61SELECT
62 li.installment_id,
63 li.installment_number,
64 li.due_date,
65 li.amount,
66 li.status,
67 li.paid_date,
68 l.loan_id,
69 l.client_id
70FROM Loan_installment li
71JOIN Loan l ON li.loan_id = l.loan_id
72WHERE l.status IN ('APPROVED', 'CLOSED')
73 AND li.amount > 0
74 AND li.due_date IS NOT NULL;
75
76SELECT *
77FROM v_loan_installments;
78
79
80--Преглед на кредити
81CREATE VIEW v_loans AS
82SELECT
83 l.loan_id,
84 l.loan_type,
85 l.amount,
86 l.interest_rate,
87 l.start_date,
88 l.end_date,
89 l.status,
90 l.approved_date,
91 c.client_id,
92 c.first_name,
93 c.last_name
94FROM Loan l
95JOIN Client c ON l.client_id = c.client_id
96WHERE l.status IN ('APPROVED', 'CLOSED')
97 AND l.amount > 0
98 AND l.interest_rate >= 0
99 AND (l.status <> 'APPROVED' OR l.approved_date IS NOT NULL);
100
101
102SELECT *
103FROM v_loans;
104
105--Трансакции
106CREATE VIEW v_transactions AS
107SELECT
108 t.transaction_id,
109 t.amount,
110 t.transaction_date,
111 t.status,
112 t.description,
113 t.reference_number,
114 t.account_id,
115 at.account_number,
116 tt.type_name AS transaction_type,
117 pm.method_name AS payment_method
118FROM Transaction t
119JOIN Account at ON t.account_id = at.account_id
120LEFT JOIN Transaction_type tt ON t.transaction_type_id = tt.transaction_type_id
121LEFT JOIN Payment_method pm ON t.payment_method_id = pm.method_id
122WHERE t.status = 'COMPLETED'
123 AND t.amount > 0
124 AND t.transaction_date IS NOT NULL
125 AND at.status = 'ACTIVE';
126
127SELECT *
128FROM v_transactions;
129
130--Сомнителни трансакции
131CREATE VIEW v_suspicious_transactions AS
132SELECT *
133FROM Transaction
134WHERE amount > 10000
135 OR status IN ('FAILED', 'PENDING');
136
137SELECT *
138FROM v_suspicious_transactions;
139
140
141--Вкупна состојба на клиент
142CREATE VIEW v_client_total_balance_10 AS
143SELECT
144 c.client_id,
145 c.first_name,
146 c.last_name,
147 SUM(a.balance) AS total_balance
148FROM Client c
149JOIN Account a ON c.client_id = a.client_id
150WHERE c.client_id = 10
151GROUP BY c.client_id, c.first_name, c.last_name;
152
153SELECT *
154FROM v_client_total_balance_10;
155
156--Следење на доцнења (Loan Default Monitoring)
157CREATE VIEW v_loan_default_monitoring AS
158SELECT
159 l.loan_id,
160 l.client_id,
161 li.installment_id,
162 li.due_date,
163 li.status,
164 li.paid_date
165FROM Loan_installment li
166JOIN Loan l ON li.loan_id = l.loan_id
167WHERE li.status = 'LATE'
168 OR (li.paid_date IS NULL AND li.due_date < CURRENT_DATE);
169
170
171SELECT *
172FROM v_loan_default_monitoring;
173
174
175--Accounts (сметки)
176CREATE VIEW v_accounts AS
177SELECT
178 a.account_id,
179 a.account_number,
180 a.account_type,
181 a.balance,
182 a.status,
183 c.client_id,
184 c.first_name,
185 c.last_name,
186 b.branch_name
187FROM Account a
188JOIN Client c ON a.client_id = c.client_id
189JOIN Branch b ON a.branch_id = b.branch_id
190WHERE a.status = 'ACTIVE'
191 AND c.status = 'ACTIVE'
192 AND a.balance >= 0;
193
194
195SELECT *
196FROM v_accounts;
197
198
199
200--Камати по штедни сметки
201CREATE VIEW v_savings_interest_payments AS
202SELECT
203 ip.interest_payment_id,
204 ip.amount,
205 ip.payment_date,
206 ip.period_start,
207 ip.period_end,
208 a.account_id,
209 a.account_number,
210 sa.interest_rate
211FROM InterestPayment ip
212JOIN Account a ON ip.account_id = a.account_id
213JOIN SavingsAccount sa ON sa.account_id = a.account_id
214WHERE a.account_type = 'SAVINGS'
215 AND a.status = 'ACTIVE'
216 AND ip.amount > 0
217 AND a.balance >= sa.minimum_balance
218 AND sa.interest_rate > 0;
219SELECT *
220FROM v_savings_interest_payments;
221
222
223--Дневен извештај на филијала
224CREATE VIEW v_daily_branch_report AS
225SELECT
226 dr.report_id,
227 dr.report_date,
228 dr.total_transactions,
229 dr.total_amount,
230 b.branch_id,
231 b.branch_name,
232 b.city
233FROM Daily_report dr
234JOIN Branch b ON dr.branch_id = b.branch_id
235WHERE dr.report_date IS NOT NULL
236 AND dr.report_date <= CURRENT_DATE
237 AND dr.total_transactions >= 0
238 AND dr.total_amount >= 0;
239
240SELECT *
241FROM v_daily_branch_report;