Skip to content

Commit 5128488

Browse files
author
Aymeric
committed
Requêtes avancées
1 parent e1cda7d commit 5128488

File tree

3 files changed

+70
-0
lines changed

3 files changed

+70
-0
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
.vscode/
2+
.idea/

investissement_sup.sql

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/* Identifier les clients avec un
2+
total d'investissements supérieur à leur solde total.
3+
*/
4+
use bankapp;
5+
6+
SELECT clients.id_client, comptes.solde, SUM(transactions.montant) as total_transactions
7+
FROM clients
8+
JOIN comptes ON clients.id_client = comptes.id_client
9+
JOIN transactions ON transactions.id_compte = comptes.id_compte
10+
WHERE transactions.statut = 'validé'
11+
GROUP BY clients.id_client, comptes.solde
12+
HAVING SUM(transactions.montant) > comptes.solde

taux_transactions_reussies.sql

+56
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
/*
2+
Trouver les comptes ayant le plus haut taux de transactions réussies
3+
*/
4+
use bankapp;
5+
6+
SELECT DISTINCT comptes.id_compte, comptes.id_client, c.prenom,
7+
COUNT(transactions.id_transaction) as transactions_reussies,
8+
COUNT(transactions.id_transaction) * 100.0 /
9+
(SELECT COUNT(*) FROM transactions WHERE transactions.id_compte = comptes.id_compte) as taux_reussite
10+
FROM comptes
11+
JOIN transactions ON comptes.id_compte = transactions.id_compte
12+
JOIN clients c ON c.id_client = comptes.id_client
13+
WHERE transactions.statut = 'validé'
14+
GROUP BY comptes.id_compte, comptes.id_client, c.prenom
15+
ORDER BY taux_reussite DESC, transactions_reussies DESC;
16+
17+
SELECT DISTINCT c.id_client, c.nom, c.prenom
18+
FROM clients c
19+
LEFT JOIN comptes co ON c.id_client = co.id_client
20+
LEFT JOIN prets p ON c.id_client = p.id_client
21+
LEFT JOIN transactions t ON co.id_compte = t.id_compte AND t.type = 'investissement'
22+
WHERE p.id_pret IS NULL
23+
AND t.id_transaction IS NULL;
24+
25+
/*
26+
Déterminer le montant total des intérêts générés par les prêts
27+
*/
28+
SELECT SUM(montant * taux_interet * duree / 12) AS total_interets
29+
FROM prets;
30+
31+
/*
32+
Calculer la variation mensuelle du nombre de transactions
33+
*/
34+
WITH transactions_mensuelles AS (
35+
SELECT
36+
DATE_FORMAT(date_transaction, '%Y-%m-01') AS mois,
37+
COUNT(*) AS nombre_transactions
38+
FROM transactions
39+
GROUP BY DATE_FORMAT(date_transaction, '%Y-%m-01')
40+
),
41+
transactions_avec_mois_precedent AS (
42+
SELECT
43+
mois,
44+
nombre_transactions,
45+
LAG(nombre_transactions) OVER (ORDER BY mois) AS nombre_transactions_mois_precedent
46+
FROM transactions_mensuelles
47+
)
48+
SELECT
49+
mois,
50+
nombre_transactions,
51+
nombre_transactions_mois_precedent,
52+
nombre_transactions - nombre_transactions_mois_precedent AS variation_absolue,
53+
IF(nombre_transactions_mois_precedent = 0, NULL,
54+
(nombre_transactions - nombre_transactions_mois_precedent) * 100.0 / nombre_transactions_mois_precedent) AS variation_pourcentage
55+
FROM transactions_avec_mois_precedent
56+
ORDER BY mois;

0 commit comments

Comments
 (0)