Heim > Datenbank > MySQL-Tutorial > Wie kann ich berechnete Spalten innerhalb derselben Abfrage in PostgreSQL verwenden?

Wie kann ich berechnete Spalten innerhalb derselben Abfrage in PostgreSQL verwenden?

Patricia Arquette
Freigeben: 2025-01-14 06:08:47
Original
442 Leute haben es durchsucht

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

PostgreSQL: Effiziente Verwendung berechneter Spalten innerhalb einer einzelnen Abfrage

PostgreSQL, ein leistungsstarkes relationales Datenbankverwaltungssystem, bietet robuste Datenbearbeitungsfunktionen. Die Verwendung berechneter Spalten innerhalb einer einzelnen Abfrage unterscheidet sich jedoch von einigen anderen Datenbanksystemen. Lassen Sie uns diese Nuance erkunden.

Betrachten Sie diesen SQL-ähnlichen Ansatz, der versucht, berechnete Spalten direkt in der Hauptabfrage zu verwenden:

<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>
Nach dem Login kopieren

Dies wird in PostgreSQL fehlschlagen. Der Fehler tritt auf, weil total_1 und total_2 zum Zeitpunkt der Berechnung von total_3 nicht als vorhandene Spalten erkannt werden.

Die Lösung besteht darin, einen gemeinsamen Tabellenausdruck (CTE) oder eine Unterabfrage zu verwenden, um die berechneten Zwischenspalten verfügbar zu machen. So erreichen Sie dies mit einem 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>
Nach dem Login kopieren

Diese überarbeitete Abfrage definiert zunächst einen CTE calculated_totals, der total_1 und total_2 berechnet. Die Hauptabfrage referenziert dann diese berechneten Spalten aus dem CTE, um total_3 zu berechnen. Dieser Ansatz gewährleistet eine korrekte Berechnung ohne Leistungsaufwand. Die Verwendung von CTEs wird im Allgemeinen aus Gründen der Lesbarkeit und Wartbarkeit bei komplexen Abfragen bevorzugt. Die Verwendung von CTEs oder Unterabfragen in diesem Szenario wirkt sich nicht negativ auf die Leistung aus.

Das obige ist der detaillierte Inhalt vonWie kann ich berechnete Spalten innerhalb derselben Abfrage in PostgreSQL verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage