Heim >Datenbank >MySQL-Tutorial >Wie erstelle ich eine Pivot-Tabelle in PostgreSQL, um die durchschnittlichen Immobilienpreise nach Stadtteil und Anzahl der Schlafzimmer zusammenzufassen?

Wie erstelle ich eine Pivot-Tabelle in PostgreSQL, um die durchschnittlichen Immobilienpreise nach Stadtteil und Anzahl der Schlafzimmer zusammenzufassen?

Linda Hamilton
Linda HamiltonOriginal
2025-01-13 06:47:43396Durchsuche

How to Create a Pivot Table in PostgreSQL to Summarize Average Housing Prices by Neighborhood and Number of Bedrooms?

Erstellen von Pivot-Tabellen in PostgreSQL zur Analyse von Immobilienpreisen

PostgreSQL bietet leistungsstarke Funktionen zur Datenzusammenfassung, einschließlich der Erstellung von Pivot-Tabellen. Dieses Beispiel zeigt, wie eine Pivot-Tabelle erstellt wird, die die durchschnittlichen Immobilienpreise gruppiert nach Stadtteil und Anzahl der Schlafzimmer anzeigt.

Schritt 1: Berechnen Sie die Durchschnittspreise pro Stadtteil und Anzahl der Schlafzimmer

Zuerst berechnen wir den Durchschnittspreis für jede einzelne Kombination aus Nachbarschaft und Schlafzimmeranzahl:

<code class="language-sql">SELECT neighborhood, bedrooms, AVG(price) AS avg_price
FROM listings
GROUP BY neighborhood, bedrooms
ORDER BY neighborhood, bedrooms;</code>

Diese Abfrage gruppiert die listings Tabellendaten nach neighborhood und bedrooms und berechnet den Durchschnitt price für jede Gruppe. Die Ergebnisse werden dann der Übersichtlichkeit halber geordnet.

Schritt 2: Pivotieren Sie die Daten mit crosstab()

Um die aggregierten Daten in ein Pivot-Tabellenformat umzuwandeln, verwenden wir die Funktion crosstab():

<code class="language-sql">SELECT *
FROM crosstab(
  'SELECT neighborhood, bedrooms, avg_price
   FROM (
     SELECT neighborhood, bedrooms, AVG(price) AS avg_price
     FROM listings
     GROUP BY neighborhood, bedrooms
     ORDER BY neighborhood, bedrooms
   )',
  $$SELECT unnest('{0,1,2,3}'::int[])::text$$
) AS ct ("neighborhood" text, "0" int, "1" int, "2" int, "3" int);</code>

Die Funktion crosstab() benötigt zwei Argumente: die SQL-Abfrage, die die aggregierten Daten bereitstellt (in diesem Fall aus Gründen der Übersichtlichkeit verschachtelt), und eine Abfrage, die die Kategorien für die Pivot-Tabellenspalten definiert (hier die Anzahl der Schlafzimmer darstellend: 0, 1, 2 und 3). Dem resultierenden Tabellenalias ct werden entsprechende Spaltennamen zugewiesen.

Schritt 3: Interpretation der Ergebnisse

Die Ausgabe-Pivot-Tabelle sieht folgendermaßen aus:

<code>neighborhood  | 0       | 1       | 2       | 3
----------------+---------+---------+---------+---------
downtown      | 189000  | 325000  | NULL     | 450000
riverview     | 250000  | 300000  | 350000  | NULL</code>

Jede Zeile repräsentiert eine Nachbarschaft und jede Spalte repräsentiert die Anzahl der Schlafzimmer. Die Werte stellen den Durchschnittspreis für die jeweilige Kombination aus Nachbarschaft und Schlafzimmer dar. NULL gibt an, dass für diese bestimmte Kombination keine Einträge gefunden wurden. Dies bietet eine klare und prägnante Zusammenfassung der durchschnittlichen Immobilienpreise. Denken Sie daran, die Schlafzimmerkategorien in der Funktion unnest anzupassen, wenn Ihre Daten einen anderen Bereich der Schlafzimmeranzahl umfassen.

Das obige ist der detaillierte Inhalt vonWie erstelle ich eine Pivot-Tabelle in PostgreSQL, um die durchschnittlichen Immobilienpreise nach Stadtteil und Anzahl der Schlafzimmer zusammenzufassen?. 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