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

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

Linda Hamilton
Libérer: 2025-01-14 07:29:47
original
620 Les gens l'ont consulté

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

Utilisation de colonnes calculées dans la même requête dans PostgreSQL

PostgreSQL n'autorise pas les calculs utilisant des alias directement dans la même instruction SELECT. Par exemple, l'instruction SQL suivante signalera une erreur :

<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

En effet, lorsque PostgreSQL calcule total_3, total_1 et total_2 n'ont pas encore été définis.

La solution est d'utiliser une sous-requête (table dérivée) :

<code class="language-sql">SELECT cost_1,
       quantity_1,
       cost_2,
       quantity_2,
       total_1 + total_2 AS total_3
FROM (
    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
) t;</code>
Copier après la connexion

En créant la sous-requête t, nous définissons total_1 et total_2 comme colonnes disponibles dans l'instruction SELECT externe. Il n’y a aucune pénalité de performance avec cette approche. La requête externe fait référence à l'ensemble de résultats de la requête interne afin que total_3 puisse être calculé correctement.

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