Maison >base de données >tutoriel mysql >Comment calculer les sommes cumulées dans PostgreSQL à l'aide des fonctions de fenêtre ?
Calcul de la somme cumulée dans PostgreSQL
En informatique, il est souvent nécessaire de calculer la somme cumulée ou la somme cumulée d'un champ spécifique. Dans PostgreSQL, cela peut être facilement réalisé à l'aide des fonctions de fenêtre.
Introduction aux fonctions des fenêtres
Les fonctions de fenêtre vous permettent d'effectuer des calculs sur des lignes regroupées en fonction de conditions spécifiques. Dans cet exemple, nous souhaitons regrouper les lignes par circle_id
et calculer la somme cumulée du champ amount
.
Requête pour calculer la somme cumulée
La requête suivante montre comment calculer la somme cumulée :
<code class="language-sql">SELECT ea_month, id, amount, ea_year, circle_id, sum(amount) OVER (PARTITION BY circle_id ORDER BY ea_year, ea_month) AS cum_amt FROM tbl ORDER BY circle_id, ea_year, ea_month;</code>
Dans cette requête :
PARTITION BY
regroupe les lignes par colonne circle_id
. ORDER BY
trie les lignes de chaque partition par ea_year
et ea_month
. OVER
définit une fenêtre qui applique la fonction sum()
aux lignes commençant de chaque partition jusqu'à la ligne actuelle. cum_amt
. Traitement des données de date et d'heure
Si vos colonnes ea_year
et ea_month
sont stockées sous forme de chaînes, la requête sera triée par ordre alphabétique plutôt que chronologique. Pour trier correctement, pensez à le convertir en type date avant d'effectuer le calcul.
Exclure les pairs
Dans PostgreSQL 11 et versions ultérieures, vous pouvez utiliser l'option frame_exclusion
pour contrôler la façon dont les pairs sont gérés dans les fonctions de fenêtre. Cela vous permet d'inclure ou d'exclure certaines lignes des calculs.
En suivant ces étapes, vous pouvez calculer efficacement les sommes cumulées dans PostgreSQL, fournissant ainsi des informations précieuses sur vos données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!