Heim >Datenbank >MySQL-Tutorial >Wie führt man Berechnungen mithilfe berechneter Spalten in PostgreSQL-Abfragen korrekt durch?
Berechnete Spalten in PostgreSQL-Abfragen korrekt für Berechnungen verwenden
Bei der Verarbeitung von Daten in PostgreSQL müssen Sie häufig Berechnungen für Spalten durchführen, um neue Informationen abzuleiten. Aus diesem Grund bietet PostgreSQL die Funktionalität zum Erstellen berechneter Spalten, die als Teil derselben Abfrage verwendet werden können, die sie erstellt.
Problem: Falsche SQL-Syntax
Betrachten Sie die folgende SQL-Anweisung, die in anderen Datenbankverwaltungssystemen (DBMS) funktioniert, in PostgreSQL jedoch fehlschlägt:
<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 gibt einen Fehler aus, der besagt, dass die Spalten total_1
und total_2
nicht vorhanden sind.
Lösung: Schließen Sie die Abfrage in eine abgeleitete Tabelle ein
Um dieses Problem zu lösen, erfordert PostgreSQL, dass die SELECT-Anweisung in eine abgeleitete Tabelle eingeschlossen wird:
<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>
Mit dieser Methode können Sie auf Spaltenaliase in der abgeleiteten Tabelle zugreifen, einschließlich der berechneten Spalten total_1
und total_2
. Es verursacht keine Leistungseinbußen.
Notizen
Es ist erwähnenswert, dass unformatierte SQL-Anweisungen, die die direkte Verwendung berechneter Spalten in nachfolgenden Berechnungen ermöglichen, in PostgreSQL oder anderen DBMS nicht empfohlen werden. Dies kann zu Leistungsproblemen führen und die Abfrageoptimierung behindern.
Das obige ist der detaillierte Inhalt vonWie führt man Berechnungen mithilfe berechneter Spalten in PostgreSQL-Abfragen korrekt durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!