Heim >Datenbank >MySQL-Tutorial >Wie erstelle ich Pivot-Tabellen in PostgreSQL mit der Funktion crosstab()?

Wie erstelle ich Pivot-Tabellen in PostgreSQL mit der Funktion crosstab()?

Linda Hamilton
Linda HamiltonOriginal
2025-01-13 12:13:44156Durchsuche

How to Create Pivot Tables in PostgreSQL Using the crosstab() Function?

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:

  1. Berechnen Sie den Durchschnittspreis pro Anzahl Schlafzimmer:
<code class="language-sql">SELECT neighborhood, bedrooms, AVG(price)
FROM listings
GROUP BY 1, 2
ORDER BY 1, 2;</code>
  1. Erstellen Sie eine Kreuztabellenabfrage:
<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:

  • Die erste Abfrage berechnet den Durchschnittspreis pro Anzahl Schlafzimmer in jedem Viertel.
  • Die Funktion
  • 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.
  • Der
  • ::INT-Cast wird verwendet, um das AVG()-Ergebnis in eine Ganzzahl umzuwandeln, um gerundete Werte in der Ausgabe zu erhalten.

Zusätzliche Hinweise:

  • Das tablefunc-Modul muss installiert sein, um die crosstab()-Funktion nutzen zu können.
  • Sie können die FILTER-Klausel auch mit einer Aggregatfunktion verwenden, um eine Pivot-Tabelle zu erstellen, sie ist jedoch im Allgemeinen langsamer als die crosstab()-Funktion.
  • Es gibt verschiedene andere Methoden und Erweiterungen in PostgreSQL, die zum Erstellen von Pivot-Tabellen verwendet werden können. Bitte schauen Sie sich die Dokumentation an, um die Lösung zu finden, die Ihren spezifischen Anforderungen am besten entspricht.

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!

Stellungnahme:
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