This commit is contained in:
2025-11-14 14:25:28 +01:00
parent b463678176
commit 8299b33fce
2 changed files with 40 additions and 16 deletions

View File

@@ -667,9 +667,37 @@ create table operation (
# Séance 3 : Exploitation des données # Séance 3 : Exploitation des données
Créer des vues pour Ajouter des données
## **1. Vue : liste des titulaires détaillés** ```sql
truncate table holder;
truncate table account;
call add_bank('Banque de l''Est');
insert into currency values ('EUR'),('YEN'),('USD');
call add_account(1,'EUR');
call add_account(1,'YEN');
call add_account(1,'USD');
update account set balance = 100000 where id = 1;
update account set balance = 50000 where id = 2;
update account set balance = 200000 where id = 3;
insert into exchange_rate values
('EUR', '1999-01-01', 1),
('USD', '2025-01-02', 1.0321),
('USD', '2025-02-03', 1.0274),
('USD', '2025-03-03', 1.0465);
```
## 1. Vue : taux de change du jour
Créer une vue *today_exchange_rates* qui affiche pour **chaque devise** son taux de change du jour présent dans `exchange_rate`.
Si aucun taux du jour nexiste, la ligne ne doit pas apparaître.
## **2. Vue : liste des titulaires détaillés**
Créer une vue *holder_details* permettant dafficher **tous les titulaires** (banque, personne ou entreprise) sous une forme unifiée. Créer une vue *holder_details* permettant dafficher **tous les titulaires** (banque, personne ou entreprise) sous une forme unifiée.
@@ -683,7 +711,7 @@ La vue doit contenir :
* pour un titulaire de type *COMPANY* : *name* * pour un titulaire de type *COMPANY* : *name*
* pour un titulaire de type *BANK* : *name* * pour un titulaire de type *BANK* : *name*
## **2. Vue : liste des comptes avec devise et solde** ## **3. Vue : liste des comptes avec devise et solde**
Créer une vue *account_summary* affichant : Créer une vue *account_summary* affichant :
@@ -693,7 +721,7 @@ Créer une vue *account_summary* affichant :
* le solde * le solde
* le nombre de titulaires du compte * le nombre de titulaires du compte
## **3. Vue : comptes par titulaire** ## **4. Vue : comptes par titulaire**
Créer une vue *holder_accounts* permettant de lister les comptes détenus par chaque titulaire, avec : Créer une vue *holder_accounts* permettant de lister les comptes détenus par chaque titulaire, avec :
@@ -705,7 +733,7 @@ Créer une vue *holder_accounts* permettant de lister les comptes détenus par c
La vue doit fusionner les informations venant de **holder, person et company**. La vue doit fusionner les informations venant de **holder, person et company**.
## **4. Vue : opérations enrichies** ## **5. Vue : opérations enrichies**
Créer une vue *operation_details* affichant les opérations avec : Créer une vue *operation_details* affichant les opérations avec :
@@ -717,11 +745,7 @@ Créer une vue *operation_details* affichant les opérations avec :
* le solde du compte **après lopération** (bonus : fenêtre analytique) * le solde du compte **après lopération** (bonus : fenêtre analytique)
## **5. Vue : taux de change du jour**
Créer une vue *today_exchange_rates* qui affiche pour **chaque devise** son taux de change du jour présent dans `exchange_rate`.
Si aucun taux du jour nexiste, la ligne ne doit pas apparaître.
## **6. Vue : solde converti en EUR** ## **6. Vue : solde converti en EUR**

View File

@@ -24,7 +24,7 @@ call add_person('Émilie','Jolie', '1992-01-01', array['EUR']);
call add_person('Soufiane','Mamoun', '1993-01-01',array['EUR', 'EUR']); call add_person('Soufiane','Mamoun', '1993-01-01',array['EUR', 'EUR']);
call add_person('Élodie','Bérengier', '1991-01-01',array['EUR', 'EUR']); call add_person('Élodie','Bérengier', '1991-01-01',array['EUR', 'EUR']);
call add_person('Eugène','Makiadi', '1994-01-01', array['EUR']); call add_person('Eugène','Makiadi', '1994-01-01', array['EUR']);
call add_person('Julie','Thomis', '1980-01-01',array['EUR', 'EUR', 'EUR']); call add_person('Julie','Thomis', '1980-01-01',array['EUR', 'USD', 'EUR']);
call add_person('Marc','Aurèle', '1981-01-01',array['USD', 'EUR', 'EUR']); call add_person('Marc','Aurèle', '1981-01-01',array['USD', 'EUR', 'EUR']);
call add_person('Albert','Unepierre', '1982-01-01', array['EUR']); call add_person('Albert','Unepierre', '1982-01-01', array['EUR']);
call add_person('Lucas','George', '1978-01-01', array['EUR']); call add_person('Lucas','George', '1978-01-01', array['EUR']);
@@ -112,14 +112,14 @@ update account set balance = 1500 where id = 62;
update account set balance = 1500 where id = 26; update account set balance = 1500 where id = 26;
with addholder as ( with addholder as (
insert into holder (type) values ('COMPANY') returning id ) insert into holder (type) values ('COMPANY') returning id
)
insert into company (id, name, registration_number, created_at) insert into company (id, name, registration_number, created_at)
select select
addholder.id, addholder.id,
'Boulangerie de Valorgue', 'FR19803269968', '2014-08-19' 'Boulangerie de Valorgue', 'FR19803269968', '2014-08-19'
from addholder; from addholder;
call transfer(45,66,239,'2025-01-05'); call transfer(45,66,239,'2025-01-05');
call transfer(50,43,128,'2025-03-02'); call transfer(50,43,128,'2025-03-02');
call transfer(34,76,185,'2025-01-21'); call transfer(34,76,185,'2025-01-21');