Maison > base de données > tutoriel mysql > Comment puis-je utiliser des colonnes calculées dans la même requête dans PostgreSQL ?

Comment puis-je utiliser des colonnes calculées dans la même requête dans PostgreSQL ?

Patricia Arquette
Libérer: 2025-01-14 06:08:47
original
439 Les gens l'ont consulté

How Can I Use Calculated Columns Within the Same Query in PostgreSQL?

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal