Eine Pivot -Tabelle ist ein leistungsstarkes Werkzeug zum Schätzung, Kompilieren und Überprüfen von Daten, um Muster und Trends noch einfacher zu finden. Pivot -Tabellen können verwendet werden, um Daten zu aggregieren, zu sortieren, zu arrangieren, zu ordnen, zu ordnen, zu ordnen, zu gruppieren, insgesamt oder durchschnittliche Daten in einem Datensatz zu sortieren, um Datenverbände und Abhängigkeiten wirklich zu verstehen. Die Verwendung einer Pivot -Tabelle als Illustration ist der einfachste Weg, um zu demonstrieren, wie diese Methode funktioniert. PostgreSQL 8.3 wurde vor ein paar Jahren gestartet und eine neue Version namens 'TableFunc' wurde hinzugefügt. TableFunc ist eine Komponente, die verschiedene Methoden enthält, die Tabellen ergeben (dh mehrere Zeilen). Diese Modifikation bietet eine sehr coole Auswahl an Funktionen. Die CrosStab -Methode, mit der Pivot -Tabellen erstellt werden, gehört dazu. Die CrosStab -Methode nimmt ein Textargument an: einen SQL -Befehl, der Rohdaten im ersten Layout zurückgibt und eine Tabelle im nachfolgenden Layout zurückgibt.
Beispiel Pivot -Tabelle ohne TableFunc:
Um mit dem "TableFunc" -Modul an dem PostgreSQL -Pivoting zu arbeiten, müssen Sie versuchen, eine Pivot -Tabelle ohne sie zu erstellen. Öffnen wir also die PostgreSQL-Befehlszeilenschale und geben die Parameterwerte für den erforderlichen Server, die Datenbank, die Portnummer, den Benutzernamen und das Passwort an. Lassen Sie diese Parameter leer, wenn Sie die ausgewählten Standardparameter verwenden möchten.
Wir erstellen eine neue Tabelle mit dem Namen "Test" in der Datenbank "Test" mit einigen Feldern, wie unten angezeigt.
>> Tabellen -Test erstellen (ID int, Name varchar (20), Sal int, Job varchar (20));Nach dem Erstellen einer Tabelle ist es Zeit, einige Werte in die Tabelle einzufügen, wie aus der folgenden Abfrage gezeigt.
>> in test (ID, Name, Sal, Job) Werte (11, 'Aqsa', 45000, 'Writer'), (11, 'Aqsa', 48000, 'Officer'), (11, 'Aqsa',. 50000, 'Doctor'), (12, 'Raza', 40000, 'Officer'), (11, 'Raza', 60000, 'Doctor'), (12, 'Raza', 67000, 'Officer'), ( 13, "Saeed", 85000, "Schriftsteller"), (13, "Saeed", 69000, "Offizier"), (13, "Saeed", 90000, "Doktor");Sie können sehen, dass die relevanten Daten erfolgreich eingefügt wurden. Sie können sehen, dass diese Tabelle mehr als 1 der gleichen Werte für ID, Name und Job enthält.
>> aus der Eingabe auswählen;Erstellen wir eine Pivot -Tabelle, in der der Datensatz der Tabelle 'Test' mithilfe der folgenden Abfrage zusammengefasst ist. Der Befehl verschmilzt die gleichen Werte der Spalte "ID" und "Name" in einer Zeile, während die Summe der Spaltenwerte der "Gehalts" für dieselben Daten gemäß "ID" und "Name" übernommen wird. Es ist auch aussagekräftig, wie oft ein Wert in dem jeweiligen Satz von Werten aufgetreten ist.
>> ID, Name, Summe (Sal) Sal, sum ((Job = 'Doctor') :: int) Doktor, Summe ((Job = 'Writer') :: int) Schriftsteller, Sum ') :: int) "Offizier" von Test Group By ID, Name;Beispiel Pivot -Tabelle mit TableFunc:
Wir werden damit beginnen. Zuallererst müssen Sie drei Tabellen hinzufügen, um an einem Drehpunkt zu arbeiten. Die erste Tabelle, die wir erstellen werden, ist "Make -up", in dem Informationen zu Make -up -Essentials gespeichert werden. Probieren Sie die folgende Abfrage in der Befehlszeilenschale aus, um diese Tabelle zu erstellen.
>> Tabelle erstellen, falls es nicht vorhanden ist, Make -up (make_id int primärschlüssel, p_name varchar (100) nicht null);Fügen wir nach der Erstellung von Tabelle 'Make -up' einige Datensätze hinzu. Wir werden die folgende Abfrage in der Shell ausführen, um dieser Tabelle 10 Datensätze hinzuzufügen.
Wir müssen eine andere Tabelle mit dem Namen "Benutzer" erstellen, die die Datensätze der Benutzer mit diesen Produkten enthält. Führen Sie die folgende Abfrage in der Shell aus, um diese Tabelle zu erstellen.
>> Tabelle erstellen, wenn nicht existiert Benutzer (User_id int Primärschlüssel, u_name varchar (100) nicht null);Wir haben die 20 Datensätze für die Tabelle "Benutzer" eingefügt, wie im Bild unten gezeigt.
Wir haben eine andere Tabelle, 'makeup_user'. Es hat ein anderes Feld, "Preis", das den Preis des Produkts spart. Die Tabelle wurde unter Verwendung der angegebenen Abfrage generiert.
>> Tabelle erstellen, wenn nicht existiert Makeup_user (ID int Primärschlüssel, Mid Int No Null Referenz Referenzen Make -up (make_id), uid int nicht null referenznutzer (user_id), preisdecimal (18,2));Wir haben insgesamt 56 Datensätze in diese Tabelle eingefügt, wie im Bild gezeigt.
Erstellen wir eine Ansicht weiter, um sie für die Erzeugung einer Pivot -Tabelle zu verwenden. Diese Ansicht verwendet den inneren Join, um den Primärschlüsselspaltenwerten aller drei Tabellen zu entsprechen und den "Namen", "product_name" und die "Kosten" eines Produkts aus einer Tabelle "Kunden" abzurufen
>> Erstellen Sie die Ansicht v_makeup_users als auswählen c.u_name, p.P_NAME, PC.Preis von Benutzern C Inner Join Makeup_user PC auf C.user_id = pc.UID Inner Makeup P auf dem PC.Mid = p.make_id;Um dies zu verwenden, müssen Sie zuerst das TableFunc -Paket für die Datenbank installieren, die Sie verwenden möchten. Dieses Paket ist postgresql 9 integriert.1 und später veröffentlicht durch Ausführen des folgenden Befehls. Das TableFunc -Paket wurde jetzt für Sie aktiviert.
>> Erweiterung erstellen, wenn nicht existiert TableFunc;Nach dem Erstellen der Erweiterung ist es Zeit, die Funktion crosStabab () zu verwenden, um eine Pivot -Tabelle zu erstellen. Deshalb werden wir die folgende Abfrage in der Befehlszeilenschale verwenden. Diese Abfrage holt zuerst den Datensatz aus der neu erstellten "Ansicht" ab. Diese Datensätze werden von der aufsteigenden Reihenfolge der Spalten 'u_name' und 'p_name' bestellt und gruppiert. Wir haben seinen Make -up -Namen für jeden Kunden, den er gekauft hat, sowie die Gesamtkosten für Produkte, die im Tisch gekauft wurden. Wir haben den Gewerkschaftsbetreiber auf die Spalte 'p_name' angewendet, um alle von einem Kunden gekauften Produkte separat zu fassen. Dadurch werden alle Kosten der von einem Benutzer gekauften Produkte in einen Wert zusammengefasst.
Unser Drehstaber wurde bereit und im Bild angezeigt. Sie können deutlich sehen, dass einige Spaltenräume unter jedem P_NAME leer sind, da sie dieses bestimmte Produkt nicht gekauft haben.
Abschluss:
Wir haben jetzt brillant gelernt, wie man eine Pivot -Tabelle erstellt, um die Ergebnisse der Tabellen mit und ohne die Verwendung des TableFunc -Pakets zusammenzufassen.