Gruparea Postgresql de

Gruparea Postgresql De



Postgresql group by clause este o caracteristică care este utilizată pentru a uni/combina acele rânduri din tabel care au aceleași date. Această clauză este folosită în principal pentru a elimina datele duplicate și pentru a menține concurența. Ori de câte ori dorim să calculăm suma sau orice alt agregat, cum ar fi AVG, etc., acest grup după clauză este întotdeauna folosit deoarece există multe clauze utilizate în PostgreSQL. Dar există o ierarhie între fiecare clauză.

DIN > UNDE > „GROUP BY” > HAVING > SELECT > DISTINCT > ORDER BY > LIMIT

Funcționarea PostgreSQL se află în clauza „where” și „Having”.







Sintaxă



coloana SELECT

DIN dumytable

UNDE [condiții]

GROUP BY prima coloană, a doua coloană..

ORDEREA după prima coloană, a doua coloană.. ;

Exemplul 1



Pentru a înțelege conceptul de grup după funcție, folosim un exemplu aici. În tabelul de pasageri, puteți vedea că numele de familie sunt aceleași pentru unele persoane. Fiecare nume care este similar cu altul formează un grup, iar plata lor este adăugată colectiv față de același nume. Acest lucru este elaborat în exemplul de mai jos.





>> selectați lname, SUM (plată) de la pasager GROUP BY lname;

Numele de familie al pasagerului este selectat cu ajutorul unei funcții încorporate „SUMA” care ia coloana „plată”. Și adăugați plata pentru acele persoane care au același nume. De exemplu, se adaugă salariul lui „Javed” și „saad”. În timp ce pentru „Malik” și „Shams”, este menționat individual.



În mod similar, luați în considerare un tabel „spital”. Vrem să grupăm orașul pentru vârstă. În acest exemplu, un oraș există de mai multe ori într-o coloană. Fiecare oraș este grupat cu același nume de oraș. Vârstele fiecărui grup al orașului sunt adăugate și formează un singur rând.

Spital:

>> selectați orașul, SUMA (vârstă) din spital GROUP BY oraș;

Exemplul 2

Alternativ, dacă selectăm numele de familie cu id-ul de la pasagerul de masă, rezultatul va fi un tabel diferit. Pentru că atunci când grupăm ambele coloane împreună, va afișa numele fiecărui pasager, deoarece ID-ul fiecărui pasager, chiar dacă are un nume de familie comun, este diferit. Suma se calculează într-o coloană separată, dar plata fiecărui pasager este menționată în fața numelui său deoarece gruparea lname-ului nu se face aici.

Acesta este un exemplu de grupare prin clauză cu mai multe coloane. Deoarece atunci când sunt selectate mai multe coloane pentru grupare, valoarea rezultată este modificată în comparație cu grupul printr-un singur tabel.

>> selectați id, lname, SUM (plată) de la pasager GROUP BY id, lname;

Din rezultat, veți observa un lucru că, în primul rând, sunt afișate toate acele nume neobișnuite, iar apoi cele care sunt la fel sunt menționate în tabel.

Exemplul 3

Acest exemplu are o condiție de alăturare și o clauză de grupare. Deoarece se folosește „join”, înseamnă că am folosit două tabele aici. Unul este „articol”, iar celălalt este „comenzi”.

articole:

Comenzi:

Am folosit o metodă de concatenare (folosită pentru a uni două șiruri de caractere) pentru a uni valorile a două coloane din tabelul „articole” cu „,” și a denumi coloana în mod colectiv drept „descriere”. Este optional; le puteți lua separat. În această interogare, cuvântul cheie „FOLOSIRE” identifică coloana specifică din celălalt tabel. Adresa din tabelul cu articole este corelată cu coloana cu adrese din tabelul „comenzi”. Acest lucru se face prin realizarea unei uniri între două tabele. Ca și exemplele anterioare, ambele coloane vor fi selectate de clauza GROUP BY.

>> selectați numele || ‘,’ || categorie ca Descriere, adresă din articolele de unire internă Comenzi UTILIZARE (adresă) GROUP BY adresa, Descriere;

Puteți observa că vor fi selectate 5 rânduri având adresa articolelor potrivită cu adresa Comenzilor. Și apoi, coloana Descriere va fi formată în corespondență cu coloana adresă.

În mod similar, există un alt exemplu de concatenare cu factorul de vârstă în două tabele. Unul este „pasager”, iar celălalt este „muncitor”. Concatenarea este între prenume și prenume. Ambele nume sunt separate prin spațiul dintre două nume. Am luat o parte din masa muncitorilor aici.

Muncitor:

Interogarea va funcționa astfel încât punctul în care fname-ul lucrătorului este potrivit cu pasagerul, vârsta pasagerului, să fie afișat în coloana de vârstă.

>> selectați fname || ‘ ‘ || passenger.lname ca nume_complet, pasager.vârsta de la pasager INNER join worker USING (fname) GROUP BY nume_complet, pasager.varsta ORDER BY pasager.varsta;

Se formează un rând. Numele_complet este creat prin unirea a două coloane cu spațiu, iar adresa este selectată unde fname-ul pasagerului se potrivește cu fname-ul lucrătorului.

Exemplul 4

Acest exemplu tratează utilizarea unei funcții de numărare () pentru a număra ID-urile tabelului „articole”. Acesta este din nou grupat după id-ul tabelului.

>> Selectați id, COUNT (id) FROM item GROUP BY id;

Rândurile din coloana ID sunt împărțite în grupuri. Fiecare grup este numărat în coloană de câte ori apare în coloană. În tabelul rezultat, este creată o nouă coloană cu un nume „număr”, iar valorile numărării sunt scrise aici în fața fiecărui grup.

Administratorul dvs. pg

Acum am aplicat câteva exemple pe partea tabloului de bord al PostgreSQL. Aceste exemple sunt diferite într-un fel, deoarece formează un rând subtotal din coloana originală atunci când oricare dintre elemente diferă de celelalte, astfel încât valoarea este returnată ca NULL.

Luați în considerare primul exemplu; aici, am creat un nume de coloană „ALL” care a combinat două coloane. O adresă și o categorie. Coloana „ALL” numără valorile din ambele coloane în mod colectiv. Coloana cu adresă este grupată ca „adăugați”, iar coloana cu categorii este grupată separat ca „pisica”. Deoarece numele de coloane ale ambelor tabele utilizate pot fi asociate între ele. Deci fiecare coloană a tabelului respectiv este accesată de un anumit obiect.

Condiția aplicată comenzii depinde de id și de numărul comenzii. Acolo unde ambele numere de identificare și de comandă sunt aceleași, datele sunt preluate. În mod similar, este adăugată și o condiție suplimentară pentru nume.

>> SELECTAȚI o.address, categorie, count (*) CA „TOT”, GROUPING(o.address) AS „add” , GROUPING (category ) AS „cat” FROM articolele I, comenzi o unde i.order_no = o. order_id AND i.address= 'Lahore' GROUP BY CUBE (o.address, categorie) ORDER BY 1, 2;

Pentru orașul Lahore, este selectată o categorie. Există 4 posibilități. Uneori, jucăria este prezentă, dar nu și adresa. Si invers. Dar există o perioadă în care atât categoria, cât și adresa sunt prezente.

Acum, dacă schimbăm condiția numelui dintr-un tabel și schimbăm tabelul cu altul. „Articole.adresă” este înlocuit cu „adresa.comandă”, apoi rezultatul este diferit.

Concluzie

Clauza „Postgresql group by” este folosită pentru a aplica orice operator agregat datelor colective. Acest articol folosește grupare cu clauză cu funcție de numărare, îmbinări și selectarea și gruparea mai multor coloane. Sunt sigur că acest tutorial va fi cel mai bun mijloc de înțelegere pentru cititori.