Maison >base de données >tutoriel mysql >Comment effectuer correctement des calculs à l'aide de colonnes calculées dans les requêtes PostgreSQL ?
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!