|
| 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