PostgreSQL

PostgreSQL NTILE-Fensterfunktion

PostgreSQL NTILE-Fensterfunktion
Window-Methoden in PostgreSQL wurden verworfen, um divergierende Daten auszugleichen und sind für analytische und andere PostgreSQL-Anwendungsfälle unerlässlich. Die Methode NTILE() gefolgt von der OVER-Klausel in PostgreSQL wird verworfen, um organisierte Zeilen in eine Reihe von abgestuften Buckets zu unterteilen. Buckets sind nichts anderes als eine Reihe von Ranggruppen. In diesem Artikel erfahren Sie, wie Sie sortierte Zeilen in einer Partition mithilfe der PostgreSQL NTILE()-Funktion in eine bestimmte Anzahl von Buckets mit Rang aufteilen. Die Methode NTILE() weist jeder Gruppe, beginnend bei 1 in einer Menge, eine Bucket-Nummer zu und demonstriert die Menge, in der die Zeile ihren Platz hat.

Syntax:

>> NTILE(buckets) OVER ( [PARTITION BY Partitionsausdruck,… ] [ORDET BY Sortierausdruck] ) [ASC | DESC],… ]);

Um die NTILE-Methode zu verstehen, melden Sie sich zunächst über die PostgreSQL-Shell an. Versuchen Sie deshalb, die PostgreSQL-Befehlszeilen-Shell aus den Anwendungen zu starten. Um auf einem anderen Server zu arbeiten, geben Sie den Namen eines Servers ein; andernfalls drücke Enter. Wenn Sie mit der zuvor angegebenen Datenbank üben müssen, z.G., Postgres, dann Enter drücken oder sonst einen Datenbanktitel schreiben, e.G. 'Prüfung'. Um einen anderen Port als 5432 zu verwenden, beschriften Sie ihn; wenn nicht, lassen Sie es so wie es ist und drücken Sie die Eingabetaste, um fortzufahren. Möglicherweise werden Sie aufgefordert, den Benutzernamen einzugeben, falls Sie zu einem neuen Benutzernamen wechseln müssen. Geben Sie den Benutzernamen ein; andernfalls drücken Sie einfach die Eingabetaste. Schließlich müssen Sie Ihr aktuelles Benutzerkennwort eingeben, um mit der Befehlszeile zu wechseln, indem Sie diesen bestimmten Benutzer wie unten verwenden. Nach der wirksamen Eingabe aller obligatorischen Daten können Sie mit der Arbeit an NTILE beginnen.

Um mit der Arbeit an NTILE zu beginnen, müssen Sie mit dem Befehl CREATE eine neue Tabelle erstellen, wenn Sie noch keine haben have. Denken Sie sich die unten angezeigte Tabelle „Mitarbeiter“ in Ihrer PostgreSQL-Datenbank mit dem Namen „test“ durch. Diese Tabelle enthält vier Spalten e.G., ID, Name, Alter und Gehalt eines Mitarbeiters eines bestimmten Unternehmens. Jede Spalte hat insgesamt 10 Zeilen , das heißt 10 Datensätze in jedem Spaltenfeld.

>> AUSWÄHLEN * VON Mitarbeiter;

Zu Beginn müssen wir das einfache Konzept des Abrufens von Datensätzen aus einer Tabelle mit der ORDER BY-Klausel verstehen. Wir haben den folgenden SELECT-Befehl ausgeführt, ohne NTILE zu verwenden, um das Konzept kurz auszuarbeiten und zu verstehen. Wir rufen Datensätze für Spalten ab; Name, Alter und Gehalt beim Sortieren der Datensätze in aufsteigender Reihenfolge des Feldes „Alter“. Sie können sehen, dass es nur die Datensätze anzeigt, wie sie im Bild dargestellt sind.

>> WÄHLEN Sie Name, Alter, Gehalt VON Mitarbeiter BESTELLEN NACH Alter;

Verwendung von NTILE() OVER mit ORDER BY-Klausel:

Unter der Annahme derselben Tabelle „Mitarbeiter“ beginnen wir in unserem Beispiel mit der Verwendung der NTILE() OVER-Klausel. In diesem Beispiel haben wir die beiden Spalten ausgewählt; Name und Gehalt, wobei das Ergebnis nach der aufsteigenden Reihenfolge einer Spalte "Gehalt" sortiert wird. Das Ergebnis enthält Daten, wenn das Alter eines Mitarbeiters mehr als 24 Jahre beträgt. Wir haben den Wert des NTILE-Buckets als „3“ definiert, weil wir Zeilen in 3 Buckets aufteilen möchten, z.G., 1 bis 3. Sie können sehen, dass die Zeilen erfolgreich in 3 gleiche Buckets aufgeteilt wurden, die 3 Zeilen in jedem Bucket enthalten.

>> WÄHLEN Sie Name, Gehalt, NTILE(3) OVER( ORDER BY Gehalt ) FROMemployee WHERE Alter > '24';

Nehmen wir nun ein weiteres Beispiel, während wir dieselbe Tabelle „Mitarbeiter“ verwenden. Dieses Mal möchten wir die Datensätze von drei Spalten abrufen; Name, Alter und Gehalt mit der SELECT-Abfrage in der Befehlsshell. Es gibt geringfügige Änderungen in der WHERE-Klausel. Derzeit haben wir nach den Datensätzen der Tabelle "Mitarbeiter" gesucht, bei denen das Alter weniger als 27 Jahre beträgt, was nur die Datensätze mit einem Alter von weniger als 27 Jahren erhält. Andererseits ändert sich der Bucket-Wert nicht, da er wieder 3 . beträgt. Beim Ausprobieren des angegebenen Befehls haben wir nur drei Datensätze gefunden, die gleichmäßig in 3 Eimer unterteilt sind, wie im Bild gezeigt.

>> WÄHLEN Sie Name, Alter, Gehalt, NTILE(3) OVER (BESTELLEN NACH Gehalt) VON Mitarbeiter WO Alter < '27';

Verwendung von NTILE() OVER mit ORDER BY- und PARTITION BY-Klausel:

Sehen wir uns ein Beispiel für NTILE() OVER an, während die Klauseln PARTITION BY und ORDER BY gleichzeitig verwendet werden. Angenommen, es wird die unveränderte Tabelle „employee“ aus einer Datenbank „test“ verwendet. In diesem Beispiel müssen Sie die drei Spalten auswählen; Name, Alter und Gehalt, wobei aufsteigend nach einem Feld „Alter“ sortiert wird. Außerdem haben wir die PARTITION BY-Klausel in der Spalte „Gehalt“ verwendet, um Partitionen einer Tabelle gemäß dieser Spalte zu erstellen. Es gibt keine spezifische Bedingung, die in dieser speziellen Abfrage verwendet wurde, was bedeutet, dass alle Datensätze der Tabelle „Mitarbeiter“ angezeigt werden. Der NTILE-Bucket hat einen Wert von „3“. Bei der Ausführung der unten angegebenen Abfrage sehen Sie das folgende Ergebnis. Die Aufteilung erfolgt nach den eindeutigen Werten der Spalte „Gehalt“. Alle Werte der Spalte „Gehalt“ sind unterschiedlich, deshalb liegt sie in verschiedenen Partitionen außer dem Wert „60000“. Das bedeutet, dass jede Partition 1 Wert außer einem hat. Danach wurden alle Partitionszeilen durch Buckets geordnet. Nur ein Eimer hat den 2. Rang bekommen.

>> WÄHLEN Sie Name, Alter, Gehalt, NTILE(3) OVER( TEILUNG NACH Gehalt, BESTELLEN NACH Alter ) FROM Mitarbeiter;

Nehmen wir das gleiche Beispiel von NTILE() OVER mit der Verwendung von PARTITION BY und ORDER BY-Klausel mit einer WHERE-Klausel. In der WHERE-Klausel haben wir die Bedingung definiert, dass nur Datensätze abgerufen werden, wenn das Alter des Mitarbeiters weniger als 27 Jahre beträgt. Wir haben nur 3 Ergebnisse mit 2 Partitionen nach Alter und "ntile" Spalte mit Rängen erhalten.

>> WÄHLEN Sie Name, Alter, Gehalt, NTILE(3) OVER( TEILUNG NACH Gehalt, BESTELLEN NACH Alter) FROM Mitarbeiter WO Alter < '27';

Fazit:

In diesem Handbuch haben wir verschiedene Beispiele für Ntil-Funktionen besprochen. Sie können sie nach Ihren Bedürfnissen implementieren.

Beste Gamepad-Mapping-Apps für Linux
Wenn du Spiele unter Linux gerne mit einem Gamepad statt mit einem typischen Tastatur- und Maus-Eingabesystem spielst, gibt es einige nützliche Apps f...
Nützliche Tools für Linux-Spieler
Wenn Sie gerne unter Linux spielen, haben Sie wahrscheinlich Apps und Dienstprogramme wie Wine, Lutris und OBS Studio verwendet, um das Spielerlebnis ...
HD-Remastered-Spiele für Linux, die noch nie zuvor eine Linux-Version hatten
Viele Spieleentwickler und -herausgeber entwickeln HD-Remaster alter Spiele, um die Lebensdauer des Franchise zu verlängern. Bitte Fans, die Kompatibi...