Applez Nous: +41 22 518 70 00
Une clause GROUP BY classique condense les enregistrements d’un groupe en une ligne de résumé unique, faisant disparaître les détails individuels. À l’inverse, les Window Functions exécutent des calculs d’agrégation ou de positionnement sur un ensemble de lignes associées (la fenêtre) tout en conservant chaque ligne originale du jeu de données intacte.
La clause OVER() définit les frontières et l’ordonnancement de la fenêtre de calcul :
SELECT
date_transaction,
compte_iban,
montant_chf,
-- Classement des transactions par montant au sein de chaque compte
ROW_NUMBER() OVER(PARTITION BY compte_iban ORDER BY montant_chf DESC) AS rang_transaction,
-- Cumul progressif du solde au fil du temps (Running Total)
SUM(montant_chf) OVER(PARTITION BY compte_iban ORDER BY date_transaction ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS solde_courant,
-- Valeur de la transaction précédente (analyse temporelle de variation)
LAG(montant_chf, 1) OVER(PARTITION BY compte_iban ORDER BY date_transaction) AS montant_precedent
FROM transactions;
LAG() pour repérer deux débits successifs de montants anormaux à quelques secondes d’intervalle.montant / SUM(montant) OVER(PARTITION BY mois)) sans recourir à des auto-jointures coûteuses.