Problem: Wie können wir eine Übersichtstabelle mit den durchschnittlichen Hauspreisen, aufgeschlüsselt nach Stadtteil und Anzahl der Schlafzimmer, erstellen?
Lösung: Dies beinhaltet einen zweistufigen Prozess unter Verwendung der crosstab
-Funktion von PostgreSQL (aus der tablefunc
-Erweiterung).
<code class="language-sql">SELECT neighborhood, bedrooms, AVG(price) AS average_price FROM listings GROUP BY neighborhood, bedrooms ORDER BY neighborhood, bedrooms;</code>
crosstab
: Als nächstes geben wir die Ergebnisse aus Schritt 1 in die Funktion crosstab
ein. Diese Funktion wandelt die Daten in eine Pivot-Tabelle um. Das zweite Argument gibt die Anzahl der Schlafzimmer an, die wir als Spalten haben möchten. Beachten Sie, dass Sie die Erweiterung tablefunc
installieren müssen, falls Sie dies noch nicht getan haben (CREATE EXTENSION tablefunc;
).<code class="language-sql">SELECT * FROM crosstab( 'SELECT neighborhood, bedrooms, AVG(price)::int AS average_price FROM listings GROUP BY neighborhood, bedrooms ORDER BY neighborhood, bedrooms', $$SELECT unnest('{0,1,2,3}'::int[]) AS bedrooms$$ ) AS ct ("neighborhood" text, "0" int, "1" int, "2" int, "3" int);</code>
Diese Abfrage erzeugt eine Pivot-Tabelle mit Nachbarschaften als Zeilen und dem Durchschnittspreis für 0, 1, 2 und 3 Schlafzimmer als Spalten. Denken Sie daran, das Array '{0,1,2,3}'
so anzupassen, dass es die tatsächliche Anzahl der Schlafzimmer in Ihrer Tabelle listings
widerspiegelt. Die ::int
-Umwandlung stellt sicher, dass der Durchschnittspreis als Ganzzahl behandelt wird; Möglicherweise müssen Sie dies basierend auf dem Datentyp Ihrer price
Spalte anpassen.
Das obige ist der detaillierte Inhalt vonWie erstelle ich in PostgreSQL eine Pivot-Tabelle mit den durchschnittlichen Hauspreisen nach Nachbarschaft und Schlafzimmeranzahl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!