Maison >base de données >tutoriel mysql >Comment effectuer correctement des calculs à l'aide de colonnes calculées dans les requêtes PostgreSQL ?

Comment effectuer correctement des calculs à l'aide de colonnes calculées dans les requêtes PostgreSQL ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-14 07:14:43308parcourir

How to Correctly Perform Calculations Using Calculated Columns in PostgreSQL Queries?

Utiliser correctement les colonnes calculées dans les requêtes PostgreSQL pour les calculs

Lors du traitement de données dans PostgreSQL, vous devez souvent effectuer des calculs sur les colonnes pour obtenir de nouvelles informations. Pour cette raison, PostgreSQL fournit la fonctionnalité permettant de créer des colonnes calculées qui peuvent être utilisées dans le cadre de la même requête qui les crée.

Problème : syntaxe SQL incorrecte

Considérez l'instruction SQL suivante, qui fonctionne dans d'autres systèmes de gestion de bases de données (SGBD) mais échoue dans PostgreSQL :

<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,
      (calculated total_1 + calculated total_2) as total_3
from data;</code>

PostgreSQL générera une erreur indiquant que les colonnes total_1 et total_2 n'existent pas.

Solution : Encapsuler la requête dans une table dérivée

Pour résoudre ce problème, PostgreSQL nécessite que l'instruction SELECT soit encapsulée dans une table dérivée :

<code class="language-sql">select cost1,
       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>

Cette méthode vous permet d'accéder aux alias de colonnes dans la table dérivée, y compris les colonnes calculées total_1 et total_2. Cela n’entraîne aucune pénalité de performances.

Remarques

Il convient de noter que les instructions SQL brutes qui permettent d'utiliser directement les colonnes calculées dans les calculs ultérieurs ne sont pas recommandées dans PostgreSQL ou d'autres SGBD. Cela peut entraîner des problèmes de performances et entraver l’optimisation des requêtes.

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!

Déclaration:
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