Heim >Datenbank >MySQL-Tutorial >Wie erstelle ich Kreuztabellenabfragen in PostgreSQL mit der Funktion „crosstab()'?

Wie erstelle ich Kreuztabellenabfragen in PostgreSQL mit der Funktion „crosstab()'?

Barbara Streisand
Barbara StreisandOriginal
2025-01-25 11:11:09282Durchsuche

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 von

crosstab() 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:

  • Mehrspaltiger Pivot
  • Perspektive mit dynamischen Alternativen wie CASE und GROUP BY

crosstabview

in psql

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>

How to Create Crosstab Queries in PostgreSQL Using the `crosstab()` Function?

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!

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