From 8299b33fce5b40b7ae8fa8f408d03cb3a4994431 Mon Sep 17 00:00:00 2001 From: medina5 Date: Fri, 14 Nov 2025 14:25:28 +0100 Subject: [PATCH] Ex1 --- banque.md | 42 ++++++++++++++++++++++++++++++++--------- banque/groupe1/data.sql | 14 +++++++------- 2 files changed, 40 insertions(+), 16 deletions(-) diff --git a/banque.md b/banque.md index b36a5d0..54d4c05 100644 --- a/banque.md +++ b/banque.md @@ -667,9 +667,37 @@ create table operation ( # 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 n’existe, la ligne ne doit pas apparaître. + +## **2. Vue : liste des titulaires détaillés** Créer une vue *holder_details* permettant d’afficher **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 *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 : @@ -693,7 +721,7 @@ Créer une vue *account_summary* affichant : * le solde * 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 : @@ -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**. -## **4. Vue : opérations enrichies** +## **5. Vue : opérations enrichies** 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 l’opé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 n’existe, la ligne ne doit pas apparaître. ## **6. Vue : solde converti en EUR** diff --git a/banque/groupe1/data.sql b/banque/groupe1/data.sql index 0719b11..0063eae 100644 --- a/banque/groupe1/data.sql +++ b/banque/groupe1/data.sql @@ -11,7 +11,7 @@ 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 +insert into exchange_rate values ('EUR', '1999-01-01', 1), ('USD', '2025-01-02', 1.0321), ('USD', '2025-02-03', 1.0274), @@ -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('Élodie','Bérengier', '1991-01-01',array['EUR', '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('Albert','Unepierre', '1982-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; with addholder as ( -insert into holder (type) values ('COMPANY') returning id ) -insert into company (id, name, registration_number, created_at) -select - addholder.id, + insert into holder (type) values ('COMPANY') returning id +) +insert into company (id, name, registration_number, created_at) +select + addholder.id, 'Boulangerie de Valorgue', 'FR19803269968', '2014-08-19' from addholder; - call transfer(45,66,239,'2025-01-05'); call transfer(50,43,128,'2025-03-02'); call transfer(34,76,185,'2025-01-21');