Heim > Datenbank > MySQL-Tutorial > Wie kann ich eine PostgreSQL-Tabelle drehen, um den Durchschnittspreis nach Schlafzimmern und Nachbarschaften anzuzeigen?

Wie kann ich eine PostgreSQL-Tabelle drehen, um den Durchschnittspreis nach Schlafzimmern und Nachbarschaften anzuzeigen?

Barbara Streisand
Freigeben: 2025-01-13 08:26:42
Original
826 Leute haben es durchsucht

How to Pivot a PostgreSQL Table to Show Average Price by Bedrooms and Neighborhoods?

Erstellen einer Pivot-Tabelle in PostgreSQL

PostgreSQL verwendet die Funktion crosstab(), um Pivot-Tabellen zu erstellen. Diese Funktion akzeptiert zwei Eingaben: eine Abfrage und eine Liste von Spaltennamen. Die Abfrage sollte eine Ergebnismenge mit zwei Spalten erzeugen: eine für Zeilenüberschriften und eine für Datenwerte. Die Liste der Spaltennamen sollte den Spalten im Ergebnissatz entsprechen, die geschwenkt werden sollen.

Frage:

Betrachten Sie die folgende Tabelle mit dem Namen listings:

id neighborhood bedrooms price
1 downtown 0 189000
2 downtown 3 450000
3 riverview 1 300000
4 riverview 0 250000
5 downtown 1 325000
6 riverview 2 350000

Wie erstelle ich eine Pivot-Tabellenabfrage mit der Anzahl der Schlafzimmer als Spalten und der Nachbarschaft als Zeilen, die den Durchschnittspreis pro Schlafzimmer anzeigt?

Die erforderliche Ausgabe sollte wie folgt formatiert sein:

neighborhood 0 1 2 3
downtown 189000 325000 - 450000
riverview 250000 300000 350000 -

Lösung:

Um eine Pivot-Tabelle zu erstellen, befolgen Sie diese Schritte:

  1. Durchschnitt berechnen: Verwenden Sie die Aggregatfunktion avg(), um den Durchschnittspreis für jede Kombination aus Nachbarschaft und Anzahl der Schlafzimmer zu berechnen.

    <code class="language-sql"> SELECT
       neighborhood,
       bedrooms,
       avg(price)
     FROM
       listings
     GROUP BY
       1, 2
     ORDER BY
       1, 2;</code>
    Nach dem Login kopieren
  2. Ergebnisse an crosstab() bereitstellen: Die Ergebnisse der vorherigen Abfrage an die Funktion crosstab() bereitstellen. Verwenden Sie $$...$$, um ein Wertearray für Spaltennamen anzugeben. Sie können den Durchschnitt in eine ganze Zahl umwandeln, um ein gerundetes Ergebnis zu erhalten.

    <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[])$$
       ) AS ct (
         "neighborhood" text,
         "0" int,
         "1" int,
         "2" int,
         "3" int
       );</code>
    Nach dem Login kopieren

Diese Abfrage generiert die erforderliche Pivot-Tabelle, indem sie den Durchschnittspreis verschiedener Schlafzimmer in jeder Nachbarschaft berücksichtigt.

Diese überarbeitete Antwort behält das Originalbild bei und formuliert den Text neu, um eine ähnliche Bedeutung zu erreichen und gleichzeitig das wörtliche Kopieren zu vermeiden. Schlüsselphrasen und Strukturelemente werden geändert, aber die Kerninformationen bleiben erhalten.

Das obige ist der detaillierte Inhalt vonWie kann ich eine PostgreSQL-Tabelle drehen, um den Durchschnittspreis nach Schlafzimmern und Nachbarschaften anzuzeigen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage