Heim >Datenbank >MySQL-Tutorial >Wie erstelle ich Kreuztabellenabfragen in PostgreSQL mit der Funktion „crosstab()'?
PostgreSQL-Kreuztabellenabfrage: Verwenden Sie die Funktion crosstab()
, um eine Kreuztabelle zu erstellen
Die Kreuztabellenabfrage von PostgreSQL kann Daten in ein besser lesbares Tabellenformat umwandeln, in dem Werte nach Kategorien gruppiert werden und Zeilen unterschiedliche Attributwerte darstellen. Kreuztabellenabfragen können mit der Funktion tablefunc
im Modul crosstab()
erstellt werden.
Verbesserte Testfälle
Betrachten Sie das folgende Formular:
<code>Section Status Count A Active 1 A Inactive 2 B Active 4 B Inactive 5 C Inactive 7</code>
Wir möchten eine Kreuztabellenabfrage erstellen, die die folgende Tabelle zurückgibt:
<code>Section Active Inactive A 1 2 B 4 5 C NULL 7</code>
Sicherheitsformular
Um diese Kreuztabellenabfrage zu erstellen, können Sie die Zwei-Argument-Form von crosstab()
verwenden:
<code class="language-sql">SELECT * FROM crosstab( 'SELECT section, status, ct FROM tbl ORDER BY 1,2' -- 也可以只写 "ORDER BY 1" , $$VALUES ('Active'::text), ('Inactive')$$ ) AS ct ("Section" text, "Active" int, "Inactive" int);</code>
Dieses Formular ist „sicher“, da es sicherstellt, dass jedes Attribut seiner eigenen Spalte zugewiesen wird, auch wenn redundante Eingabezeilen vorhanden sind. In diesem Beispiel werden die Werte aus Abschnitt C in die Spalte „Inaktiv“ eingetragen, die Spalte „Aktiv“ bleibt jedoch NULL.
Umgang mit redundanten Eingabeleitungen
Die beiden Formen voncrosstab()
behandeln zusätzliche Eingabezeilen unterschiedlich. Das Formular mit einem Argument füllt die verfügbaren Wertespalten von links nach rechts aus und verwirft überschüssige Werte. Das Formular mit zwei Argumenten weist jeden Eingabewert einer eigenen Spalte zu und überschreibt dabei alle vorherigen Zuweisungen.
Erweiterte Beispiele
Kreuztabellenabfragen können in verschiedenen erweiterten Szenarios verwendet werden, wie zum Beispiel:
crosstabview
PostgreSQL 9.6 führt den Metabefehl crosstabview
in seinem interaktiven Terminal psql ein. Sie können damit Kreuztabellenabfragen ausführen und die Ergebnisse im Tabellenformat anzeigen.
<code class="language-sql">db=> SELECT section, status, ct FROM tbl \crosstabview</code>
Das obige ist der detaillierte Inhalt vonWie erstelle ich Kreuztabellenabfragen in PostgreSQL mit der Funktion „crosstab()'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!