Grupa Postgresql wg

Grupa Postgresql Wg



Klauzula postgresql group by to funkcja używana do łączenia/łączenia tych wierszy w tabeli, które mają te same dane. Ta klauzula jest używana głównie do usuwania zduplikowanych danych i utrzymywania współbieżności. Ilekroć chcemy obliczyć sumę lub jakąkolwiek inną agregację, taką jak AVG itp., Ta klauzula group by jest zawsze używana, ponieważ w PostgreSQL używanych jest wiele klauzul. Ale istnieje hierarchia między każdą klauzulą.

OD > GDZIE > „GRUPUJ WEDŁUG” > POSIADAJĄCY > WYBIERZ > WYRÓŻNIONE > UKŁADANIE WEDŁUG > LIMIT

Działanie PostgreSQL leży w klauzuli „gdzie” i „Mieć”.







Składnia



WYBIERZ kolumnę

Z dumytable

GDZIE [warunki]

GRUPUJ WEDŁUG pierwszej kolumny, drugiej kolumny..

ORDER BY pierwsza kolumna, druga kolumna.. ;

Przykład 1



Aby zrozumieć koncepcję grupowania według funkcji, użyjemy tutaj przykładu. W tabeli pasażerów widać, że nazwiska niektórych osób są takie same. Każde nazwisko, które jest podobne do innego, tworzy grupę, a ich płatność jest dodawana zbiorczo do każdego tego samego nazwiska. Zostało to omówione w poniższym przykładzie.





>> wybierz lname, SUM (płatność) od pasażera GROUP BY lname;

Nazwisko pasażera wybierane jest za pomocą wbudowanej funkcji „SUMA”, która przyjmuje kolumnę „płatność”. I dodaj płatność dla tych osób o tym samym nazwisku. Na przykład dodawana jest pensja „Javeda” i „saada”. Natomiast w przypadku „Malika” i „Szamsa” jest on wymieniany indywidualnie.



Podobnie rozważ tabelę „szpital”. Chcemy pogrupować miasto według wieku. W tym przykładzie jedno miasto występuje w kolumnie więcej niż raz. Każde miasto jest zgrupowane z tą samą nazwą miasta. Wiek każdej grupy miast jest dodawany i tworzy jeden rząd.

Szpital:

>> wybierz miasto, SUM (wiek) ze szpitala GROUP BY miasto;

Przykład 2

Alternatywnie, jeśli wybierzemy nazwisko z id z pasażera tabeli, wynikiem będzie inna tabela. Ponieważ kiedy zgrupujemy obie kolumny razem, wyświetli się nazwisko każdego pasażera, ponieważ identyfikator każdego pasażera, nawet mającego wspólne nazwisko, jest inny. Suma jest obliczana w oddzielnej kolumnie, ale opłata każdego pasażera jest wymieniona przed jego nazwiskiem, ponieważ grupowanie lname nie jest tutaj wykonywane.

To jest przykład klauzuli group by z wieloma kolumnami. Ponieważ po wybraniu wielu kolumn do grupowania wynikowa wartość jest zmieniana w porównaniu z grupą przez pojedynczą tabelę.

>> wybierz id, lname, SUMA (płatność) od pasażera GROUP BY id, lname;

Na wyjściu zauważysz jedną rzecz, że najpierw wyświetlane są wszystkie rzadkie lname, a następnie te, które są takie same, są wymienione w tabeli.

Przykład 3

Ten przykład zawiera warunek łączenia i klauzulę group by. Użycie słowa „join” oznacza, że ​​użyliśmy tutaj dwóch tabel. Jeden to „przedmiot”, a drugi to „zamówienia”.

Rzeczy:

Zamówienia:

Użyliśmy metody konkatenacji (używanej do łączenia dwóch ciągów znaków), aby połączyć wartości dwóch kolumn tabeli „items” za pomocą „,” i nazwać kolumnę zbiorczo „description”. Jest to opcjonalne; możesz wziąć je osobno. W tym zapytaniu słowo kluczowe „USING” identyfikuje konkretną kolumnę z drugiej tabeli. Adres z tabeli pozycji jest dopasowywany do kolumny adresowej tabeli „zamówienia”. Odbywa się to poprzez połączenie dwóch tabel. Podobnie jak w poprzednich przykładach, obie kolumny zostaną wybrane przez klauzulę GROUP BY.

>> wybierz nazwę || ‘,’ || kategoria jako Opis, adres z elementów sprzężenie wewnętrzne Zamówienia USING (adres) GROUP BY adres, Opis;

Możesz zauważyć, że zostanie wybranych 5 wierszy, w których adres pozycji pasuje do adresu Zamówienia. Następnie kolumna Opis zostanie utworzona zgodnie z kolumną adresu.

Podobnie jest inny przykład konkatenacji z czynnikiem wieku w dwóch tabelach. Jeden to „pasażer”, a drugi to „pracownik”. Konkatenacja jest między imieniem a nazwiskiem. Obie te nazwy są oddzielone odstępem między dwoma nazwami. Wzięliśmy tutaj część stołu roboczego.

Pracownik:

Zapytanie zadziała w taki sposób, że w kolumnie wieku zostanie wyświetlony punkt, w którym nazwisko pracownika jest dopasowane do pasażera, czyli wiek pasażera.

>> wybierz fname || ‘’ || pasażer.lnazwa jako pełne_nazwisko, pasażer.wiek od pasażera WEWNĘTRZNY dołącz do pracownika USING (fname) GROUP BY imię i nazwisko, pasażer.wiek ORDER BY pasażer.wiek;

Powstaje jeden rząd. Pełne imię i nazwisko jest tworzone przez połączenie dwóch kolumn spacją, a adres jest wybierany w miejscu, w którym fname pasażera pasuje do fname pracownika.

Przykład 4

Ten przykład dotyczy użycia funkcji count() do zliczenia identyfikatorów tabeli „items”. To jest znowu grupowanie według identyfikatora tabeli.

>> Wybierz id, LICZ (id) Z elementów GROUP BY id;

Wiersze w kolumnie id są podzielone na grupy. Każda grupa jest liczona w kolumnie, ile razy występuje w kolumnie. W wynikowej tabeli tworzona jest nowa kolumna o nazwie „liczba”, a wartości liczby są zapisywane tutaj przed każdą grupą.

Twój pgAdmin

Teraz zastosowaliśmy kilka przykładów po stronie pulpitu nawigacyjnego PostgreSQL. Te przykłady różnią się w pewnym sensie, ponieważ tworzą wiersz sumy częściowej z oryginalnej kolumny, gdy jeden z elementów różni się od pozostałych, więc wartość jest zwracana jako NULL.

Rozważ pierwszy przykład; tutaj utworzyliśmy nazwę kolumny „ALL”, która połączyła dwie kolumny. Adres i kategoria. Kolumna „ALL” zlicza wartości w obu kolumnach łącznie. Kolumna adresu jest zgrupowana jako „dodaj”, a kolumna kategorii jest oddzielnie zgrupowana jako „kot”. Ponieważ nazwy kolumn obu używanych tabel można do siebie dopasować. Tak więc każda kolumna odpowiedniej tabeli jest dostępna przez określony obiekt.

Warunek zastosowany do polecenia zależy od identyfikatora i numeru zamówienia. Jeśli oba te numery identyfikacyjne i numery zamówienia są takie same, dane są pobierane. Podobnie do nazwy dodawany jest dodatkowy warunek.

>> SELECT o.address, category, count (*) AS “ALL”, GROUPING(o.address) AS “add” , GROUPING (category ) AS “cat” Z pozycji I, zamówienia o gdzie i.order_no = o. order_id AND i.address= 'Lahore' GRUPUJ WEDŁUG KOSTKI (o.address, kategoria) ORDER BY 1, 2;

Dla miasta Lahore wybrano jedną kategorię. Istnieją 4 możliwości. Czasami zabawka jest obecna, ale nie ma adresu. I wzajemnie. Ale istnieje czas, w którym obecna jest zarówno kategoria, jak i adres.

Teraz, jeśli zmienimy warunek nazwy z tabeli i zamienimy tabelę z inną. „Items.address” zostaje zastąpione przez „adres.zamówienia”, wtedy wynik jest inny.

Wniosek

Klauzula „Postgresql group by” służy do zastosowania dowolnego operatora agregacji do danych zbiorczych. W tym artykule użyto klauzuli group by z funkcją zliczania, sprzężeniami oraz wybieraniem i grupowaniem wielu kolumn. Jestem pewien, że ten samouczek będzie najlepszym sposobem zrozumienia dla czytelników.