Heim >Datenbank >MySQL-Tutorial >Wie erstelle ich Pivot-Tabellen in PostgreSQL mit der Funktion crosstab()?
Erstellen Sie eine Pivot-Tabelle mit PostgreSQL und der Funktion crosstab()
Bei der Datenanalyse geht es oft darum, Beziehungen zwischen verschiedenen Variablen zu untersuchen. Pivot-Tabellen sind ein leistungsstarkes Tool zum Zusammenfassen und Präsentieren von Daten, mit dem sich Trends und Muster leicht erkennen lassen. In diesem Artikel wird gezeigt, wie Sie mit PostgreSQL eine Pivot-Tabelle erstellen.
Frage:
Angenommen, Sie haben eine Tabelle mit dem Namen listings
in PostgreSQL mit den folgenden Spalten:
id
neighborhood
(Nachbarschaft)bedrooms
(Anzahl der Schlafzimmer)price
(Preis)Sie müssen eine Kreuztabellenabfrage erstellen, die den Durchschnittspreis für jede Nachbarschaft anzeigt, mit der Anzahl der Schlafzimmer als Spalten und Nachbarschaften als Zeilen. Die Ausgabe sollte im folgenden Format vorliegen:
街区 | 0 | 1 | 2 | 3 |
---|---|---|---|---|
市中心 | 189000 | 325000 | - | 450000 |
河景 | 250000 | 300000 | 350000 | - |
Lösung:
Um eine Pivot-Tabelle in PostgreSQL zu erstellen, können Sie die AVG()
-Aggregatfunktionen in Kombination mit den tablefunc
-Funktionen verwenden, die vom crosstab()
-Modul bereitgestellt werden. Hier ist eine Schritt-für-Schritt-Anleitung:
<code class="language-sql">SELECT neighborhood, bedrooms, AVG(price) FROM listings GROUP BY 1, 2 ORDER BY 1, 2;</code>
<code class="language-sql">SELECT * FROM crosstab( 'SELECT neighborhood, bedrooms, AVG(price)::INT FROM listings GROUP BY 1, 2 ORDER BY 1, 2;' , $$SELECT UNNEST('{0,1,2,3}'::INT[])::TEXT$$ ) AS ct ("neighborhood" TEXT, "0" INT, "1" INT, "2" INT, "3" INT);</code>
Erklärung:
crosstab()
verwendet als Eingabe die Ergebnisse der ersten Abfrage und erstellt eine Pivot-Tabelle. Die an die Funktion crosstab()
übergebene Zeichenfolge gibt den Spaltenwert an, der in der Kopfzeile platziert werden soll. ::INT
-Cast wird verwendet, um das AVG()
-Ergebnis in eine Ganzzahl umzuwandeln, um gerundete Werte in der Ausgabe zu erhalten. Zusätzliche Hinweise:
tablefunc
-Modul muss installiert sein, um die crosstab()
-Funktion nutzen zu können. FILTER
-Klausel auch mit einer Aggregatfunktion verwenden, um eine Pivot-Tabelle zu erstellen, sie ist jedoch im Allgemeinen langsamer als die crosstab()
-Funktion. Das obige ist der detaillierte Inhalt vonWie erstelle ich Pivot-Tabellen in PostgreSQL mit der Funktion crosstab()?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!