Postgres Group stundenlang mit der Zeit

Postgres Group stundenlang mit der Zeit
Eine Postgres -Gruppe nach Klausel wird verwendet, um die von der Auswahlanweisung erhaltenen Zeilen in die Gruppen zu unterteilen. Durch die Verwendung einer Gruppe nach Klausel können wir die Daten kurzlistig listen, indem wir sie sofort in der Tabelle erscheinen lassen. Diese Klausel enthält immer einen Spaltennamen. Postgres Group stundenweise mit Zeitverlust mit der Gruppierung der Daten durch Abhängigkeit von der Stunde des Zeitstempels.

Syntax

WÄHLEN
Spalte1,
Funktion (Spalte2)
AUS
Name_of_table
GRUPPIERE NACH
Spalte1;

Wir können auch mehr als eine Spalte im Befehl verwenden.

Gruppen -by -Klausel -Implementierung

Um das Konzept einer Gruppe nach Klausel zu erklären, betrachten Sie die folgende Tabelle mit dem Namen Client. Diese Beziehung wird erstellt, um die Gehälter jedes Kunden zu enthalten.

>> aus dem Client auswählen;

Wir werden eine Gruppe per Klausel mit einer einzigen Spalte "Gehalt" anwenden. Eine Sache, die ich hier erwähnen sollte, ist, dass die Spalte, die wir in der Auswahlanweisung verwenden, in der Gruppe nach Klausel erwähnt werden muss. Andernfalls wird ein Fehler verursacht, und der Befehl wird nicht ausgeführt.

>> Gehalt aus der Kundengruppe nach Gehalt;

Sie können sehen, dass die resultierende Tabelle zeigt, dass der Befehl diese Zeilen mit dem gleichen Gehalt gruppiert hat.

Jetzt haben wir diese Klausel auf zwei Spalten angewendet, indem wir eine integrierte Funktion count () verwenden, in der die Anzahl der von der Auswahlanweisung angewendeten Zeilen zählt, und dann wird die Gruppe nach Klausel angewendet, um die Zeilen durch Kombination der gleichen Gehaltszeilen zu filtern. Sie können sehen, dass die beiden Spalten, die in der Auswahlanweisung enthalten sind.

>> Gehalt auswählen, zählen (Gehalt) von der Kundengruppe nach Gehalt;

Gruppe zu Stunde

Erstellen Sie eine Tabelle, um das Konzept einer Gruppe durch Klausel zu einer Postgres -Beziehung zu demonstrieren. Die Tabelle mit dem Namen class_time wird mit der Spalten -ID, dem Betreff und C_period erstellt. Sowohl die ID als auch der Subjekt haben Datentypvariable von Ganzzahl und Varchar, und die dritte Spalte enthält den Datentyp der Zeit integriert, da wir die Gruppe nach Klausel auf der Tabelle anwenden müssen, um den Stundenabschnitt aus der gesamten Zeit abzurufen Stellungnahme.

>> table class_time erstellen (id Integer, Subjekt varchar (10), c_period time);

Nachdem die Tabelle erstellt wurde. In der Spalte c_period haben wir Zeit hinzugefügt, indem wir das Standardformat der Zeit verwendet haben. Um die Klauselgruppe durch die Arbeit an dieser Beziehung zu machen, müssen wir Daten eingeben, damit einige Zeilen in der Spalte c_period zueinander übereinstimmen.

>> in class_time (id, Betreff, C_period) Werte (2, 'maths', '03:06:27'), (3, 'English', '11: 20: 00 '), (4,'.Studies ', '09: 28: 55'), (5, 'Art', '11: 30: 00 '), (6,' Persisch ', '00: 53: 06');

6 Zeilen werden eingefügt. Wir werden eingefügte Daten mithilfe einer SELECT -Anweisung anzeigen.

>> aus class_time auswählen;

Beispiel 1

Um weiter bei der Implementierung einer Gruppe nach Klausel bis zum Stundenabschnitt des Zeitstempels fortzufahren, wenden wir einen SELECT -Befehl auf die Tabelle an. In dieser Abfrage wird eine Date_trunc -Funktion verwendet. Dies ist keine von Benutzer erstellte Funktion, sondern ist bereits in Postgres vorhanden, die als integrierte Funktion verwendet werden können. Es wird das Schlüsselwort "Hour" dauern, da wir uns darum kümmern, eine Stunde zu holen, und zweitens die C_period -Spalte als Parameter. Der resultierende Wert aus dieser integrierten Funktion mithilfe eines SELECT-Befehls wird die Funktion des Grafen (*) durchlaufen. Dies zählt alle resultierenden Zeilen, und dann werden alle Zeilen gruppiert.

>> select date_trunc ('stunde', c_period), count (*) von class_time Group by 1;

DATE_TRUNC () -Funktion ist die Kürzelfunktion, die auf den Zeitstempel angewendet wird, um den Eingangswert in Granularität wie Sekunden, Minuten und Stunden abzuschneiden. Entsprechend dem resultierenden Wert, der über den Befehl erhalten wurde, werden zwei Werte mit den gleichen Stunden gruppiert und zweimal gezählt.

Eine Sache sollte hier beachtet werden: Die Funktion der Kürzung (Stunde) befasst sich nur mit dem Stundenabschnitt. Es konzentriert sich auf den linkste Wert, unabhängig von den Minuten und den verwendeten Sekunden. Wenn der Wert der Stunde in mehr als einem Wert gleich ist, erstellt die Gruppenklausel eine Gruppe davon. Zum Beispiel 11:20:00 und 11:30:00 Uhr. Darüber hinaus transportiert die Spalte von DATE_TRUNC den Stundenabschnitt aus dem Zeitstempel und zeigt den Stundenteil nur an, während die Minute und der zweite '00' ist. Denn auf diese Weise kann die Gruppierung nur durchgeführt werden.

Beispiel 2

Dieses Beispiel befasst sich mit der Verwendung einer Gruppe nach Klausel entlang der Funktion von Datum_Trunc () selbst. Eine neue Spalte wird erstellt, um die resultierenden Zeilen mit der Zählspalte anzuzeigen, die die IDs zählt, nicht alle Zeilen. Im Vergleich zum letzten Beispiel wird das Sternchenzeichen durch die ID in der Zählfunktion ersetzt.

>> select date_trunc ('stündlich', c_period) as time_table, count (id) als count von class_time gruppe von DATE_TRUNC ('Hour', c_period);

Die resultierenden Werte sind gleich. Die Kreiselfunktion hat den Stundenabschnitt aus dem Zeitwert abgeschnitten, und sonst wird Teil als Null deklariert. Auf diese Weise wird die Gruppierung maßgeblich erklärt. Der PostgreSQL erhält die aktuelle Zeit aus dem System, auf dem Sie die PostgreSQL -Datenbank konfiguriert haben.

Beispiel 3

Dieses Beispiel enthält nicht die Funktion von TRUNC_DATE (). Jetzt holen wir Stunden ab diesem Zeitpunkt mit einer Extraktfunktion. Extract () Funktionen funktionieren wie das TRUNC_DATE bei der Extraktion des relevanten Teils durch die Stunde und die gezielte Spalte als Parameter. Dieser Befehl unterscheidet sich in der Arbeit und zeigt Ergebnisse in Aspekten, die nur den Stundenwert bieten. Es entfernt den Teil und Sekundenabschnitt, im Gegensatz zu TRUNC_DATE -Funktion. Verwenden Sie den Befehl auswählen, um ID und Subjekt mit einer neuen Spalte auszuwählen, die die Ergebnisse der Extraktfunktion enthält.

>> ID, Betreff, extrahieren (Stunde aus c_period) als Stunde von class_time;

Sie können beobachten, dass jede Zeile angezeigt wird, indem die Stunden jedes Mal in der jeweiligen Reihe angezeigt werden. Hier haben wir die Gruppe nicht per Klausel verwendet, um die Arbeit einer Extract () -Funktion auszuarbeiten.

Durch Hinzufügen einer Gruppe per Klausel mit 1 erhalten wir die folgenden Ergebnisse.

>> Extract (Stunde von c_period) als Stunde von Class_Time Group By 1;

Da wir im Befehl SELECT keine Spalte verwendet haben, wird nur die Stundespalte angezeigt. Dies enthält jetzt die Stunden in der gruppierten Form. Sowohl 11 als auch 9 werden einmal angezeigt, um die gruppierte Form anzuzeigen.

Beispiel 4

Dieses Beispiel befasst sich mit der Verwendung von zwei Spalten in der Auswahlanweisung. Einer ist der c_period, um die Zeit anzuzeigen, und der andere ist neu als eine Stunde erstellt, um nur die Stunden anzuzeigen. Die Gruppe nach Klausel wird auch auf die C_period- und die Extraktfunktion angewendet.

>> Wählen Sie _period, extrahieren (Stunde aus c_period) als Stunde von Class_Time Group durch Extrakt (Stunde aus c_period), c_period;

Abschluss

Der Artikel "Postgres Group By Stunde With Time" enthält die grundlegenden Informationen zur Gruppe nach Klausel. Um Gruppen nach Klausel mit Stunde implementieren zu können, müssen wir in unseren Beispielen den Zeitdatentyp verwenden. Dieser Artikel ist in der postgResQL -Datenbank implementiert, die PSQL -Shell unter Windows 10 installiert wurde.