PostgreSQL : utiliser efficacement les colonnes calculées dans une seule requête
PostgreSQL, un puissant système de gestion de bases de données relationnelles, offre de robustes capacités de manipulation de données. Cependant, l'utilisation de colonnes calculées dans une seule requête diffère de celle de certains autres systèmes de bases de données. Explorons cette nuance.
Considérez cette approche de type SQL, qui tente d'utiliser des colonnes calculées directement dans la requête principale :
<code class="language-sql">SELECT cost_1, quantity_1, cost_2, quantity_2, (cost_1 * quantity_1) AS total_1, (cost_2 * quantity_2) AS total_2, (total_1 + total_2) AS total_3 FROM data;</code>
Cela échouera dans PostgreSQL. L'erreur se produit car total_1
et total_2
ne sont pas reconnus comme colonnes existantes au point où total_3
est calculé.
La solution consiste à utiliser une expression de table commune (CTE) ou une sous-requête pour rendre disponibles les colonnes calculées intermédiaires. Voici comment y parvenir à l'aide d'un CTE :
<code class="language-sql">WITH calculated_totals AS ( SELECT cost_1, quantity_1, cost_2, quantity_2, (cost_1 * quantity_1) AS total_1, (cost_2 * quantity_2) AS total_2 FROM data ) SELECT cost_1, quantity_1, cost_2, quantity_2, total_1, total_2, (total_1 + total_2) AS total_3 FROM calculated_totals;</code>
Cette requête révisée définit d'abord un CTE, calculated_totals
, qui calcule total_1
et total_2
. La requête principale fait ensuite référence à ces colonnes calculées à partir du CTE pour calculer total_3
. Cette approche garantit un calcul correct sans surcharge de performances. L'utilisation de CTE est généralement préférée pour la lisibilité et la maintenabilité des requêtes complexes. L'utilisation de CTE ou de sous-requêtes dans ce scénario n'a pas d'impact négatif sur les performances.
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!