Maison >base de données >tutoriel mysql >Comment calculer la somme cumulée dans PostgreSQL à l'aide des fonctions de fenêtre ?
Calculer la somme cumulée dans PostgreSQL
Dans la base de données PostgreSQL, vous pouvez utiliser des fonctions de fenêtre pour calculer la somme cumulée (ou somme cumulée) des champs de la table temporaire et transférer les résultats vers la table cible. Les fonctions de fenêtre permettent d'effectuer des calculs sur la base d'une série de lignes dans une partition, dans ce cas, une partition créée à partir de la colonne circle_id
.
Syntaxe de la fonction fenêtre
La syntaxe de la fonction window utilisée ici est la suivante :
<code class="language-sql">sum(amount) OVER (PARTITION BY circle_id ORDER BY ea_year, ea_month) AS cum_amt</code>
Cette fonction de fenêtre divise par circle_id
colonne, ce qui signifie que la somme cumulée sera calculée séparément pour chaque circle_id
. Au sein de chaque partition, les lignes sont triées selon les colonnes ea_year
et ea_month
, ce qui garantit que la somme cumulée est calculée pour chaque circle
mois du plus tôt au plus tard.
Exemple de requête
En fonction de la structure de table fournie, la requête suivante générera les résultats requis :
<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>
Description
Cette requête extrait les colonnes pertinentes de la table tbl
et calcule la somme cumulée pour chaque circle_id
. La clause OVER
spécifie le partitionnement et l'ordre des fonctions de fenêtre, garantissant que la somme cumulée est calculée correctement pour chaque circle
.
Remarque importante
OVER
ORDER BY
est essentiel pour obtenir le résultat souhaité. ORDER BY
. Cependant, si vous utilisez une représentation sous forme de chaîne du mois, vous devrez peut-être utiliser la fonction to_date()
pour la convertir en valeur de date. cum_amt
résultante dans la table cible contiendra la somme cumulée de la colonne amount
, partitionnée par circle_id
et triée par ea_year
et ea_month
. 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!