Postgresql grupiranje po

Postgresql Grupiranje Po



Postgresql group by klauzula je značajka koja se koristi za objedinjavanje/kombiniranje onih redaka u tablici koji imaju iste podatke. Ova se klauzula uglavnom koristi za uklanjanje duplikata podataka i održavanje konkurentnosti. Kad god želimo izračunati zbroj ili bilo koji drugi agregat poput AVG-a itd., uvijek se koristi ova klauzula grupiranja po klauzuli jer postoji mnogo klauzula koje se koriste u PostgreSQL-u. Ali postoji hijerarhija između svake klauzule.

FROM > WHERE > “GROUP BY” > HAVING > SELECT > DISTINCT > ORDER BY > LIMIT

Rad PostgreSQL-a leži unutar klauzule 'gdje' i 'imati'.







Sintaksa



SELECT stupac

OD dumytable

GDJE [uvjeti]

GRUPIRAJ PO prvom stupcu, drugom stupcu..

ORDER BY prvi stupac, drugi stupac.. ;

Primjer 1



Da bismo razumjeli koncept grupe prema funkciji, koristimo se primjerom. U tablici putnika vidi se da su nekim osobama prezimena ista. Svako ime koje je slično drugome čini grupu, a njihova se uplata zajedno dodaje uz svako isto ime. Ovo je razrađeno u donjem primjeru.





>> odaberite ime, SUM (uplata) od putnika GROUP BY lname;

Prezime putnika odabire se pomoću ugrađene funkcije ‘SUM’ koja uzima stupac ‘plaćanje’. I dodajte plaćanje za one ljude koji imaju isto ime. Na primjer, dodaje se plaća 'Javed' i 'saad'. Dok se za “Malik” i “Shams” spominje pojedinačno.



Slično, razmislite o stolu 'bolnica'. Želimo grupirati grad prema dobi. U ovom primjeru, jedan grad postoji više puta u stupcu. Svaki grad je grupiran s istim imenom grada. Dob svake skupine grada se dodaje i čini jedan red.

Bolnica:

>> odaberite grad, SUM (dob) iz bolnice GROUP BY city;

Primjer 2

Alternativno, ako odaberemo prezime s id-om iz tablice putnika, rezultat će biti druga tablica. Jer kada grupiramo oba stupca zajedno, prikazat će se ime svakog putnika jer je ID za svakog putnika, čak i ako ima zajedničko prezime, drugačiji. Iznos se obračunava u zasebnoj koloni, ali se ispred imena svakog putnika navodi uplata jer se ovdje ne vrši grupiranje imena.

Ovo je primjer grupe prema klauzuli s više stupaca. Budući da kada je više stupaca odabrano za grupiranje, rezultantna vrijednost se mijenja u usporedbi s grupom za jednu tablicu.

>> odaberite ID, lname, SUM (uplata) od putnika GROUP BY ID, lname;

Iz izlaza ćete primijetiti jednu stvar da se prvo prikazuju sva ona imena koja nisu uobičajena, a zatim se ona koja su ista spominju u tablici.

Primjer 3

Ovaj primjer ima uvjet spajanja i klauzulu group by. Budući da se koristi 'join', to znači da smo ovdje koristili dvije tablice. Jedan je 'stavka', a drugi 'narudžbe'.

Stavke:

Narudžbe:

Koristili smo metodu ulančavanja (koja se koristi za spajanje dva niza) za spajanje vrijednosti dvaju stupaca tablice “items” s “,” i zajednički naziv stupca kao “description”. Nije obavezno; možete ih uzeti zasebno. U ovom upitu ključna riječ 'USING' identificira određeni stupac iz druge tablice. Adresa iz tablice stavki odgovara stupcu adrese u tablici 'narudžbe'. To se postiže spajanjem dvije tablice. Kao i u prethodnim primjerima, oba će stupca biti odabrana klauzulom GROUP BY.

>> odaberite ime || ‘,’ || kategorija kao Opis, adresa iz unutarnjeg spajanja stavki Narudžbe USING (adresa) GROUP BY adresa, Opis;

Možete primijetiti da će biti odabrano 5 redaka s adresom stavki koja se podudara s adresom narudžbi. Zatim će se stupac Opis formirati u skladu sa stupcem adrese.

Slično tome, postoji još jedan primjer ulančavanja s faktorom starosti u dvije tablice. Jedan je “putnik”, a drugi je “radnik”. Spajanje je između imena i prezimena. Oba ova imena su odvojena razmakom između dva imena. Ovdje smo uzeli dio radnog stola.

Radnik:

Upit će funkcionirati tako da se točka u kojoj se ime radnika podudara s imenom putnika, dob putnika, prikazuje u stupcu s godinama.

>> odaberite fname || ‘ ‘ || putnik.lname kao puno_ime, dob putnika od putnika INNER pridruži se radniku USING (fname) GROUP BY puno_ime, dob putnika ORDER BY dob putnika;

Formira se jedan red. Puno_ime se stvara spajanjem dvaju stupaca s razmakom, a adresa se odabire gdje se ime putnika podudara s imenom radnika.

Primjer 4

Ovaj primjer bavi se korištenjem funkcije count () za brojanje ID-ova tablice 'items'. Ovo je ponovno grupiranje prema ID-u tablice.

>> Odaberite id, BROJ (id) FROM stavki GROUP BY id;

Redci u stupcu ID-a podijeljeni su u grupe. Svaka grupa se broji u stupcu koliko se puta pojavljuje u stupcu. U rezultirajućoj tablici kreira se novi stupac s nazivom 'count', a vrijednosti brojanja ispisuju se ovdje ispred svake grupe.

Vaš pgAdmin

Sada smo primijenili neke primjere na strani nadzorne ploče PostgreSQL-a. Ovi primjeri se na neki način razlikuju jer tvore red međuzbroja iz izvornog stupca kada se bilo koja od stavki razlikuje od ostalih, pa se vrijednost vraća kao NULL.

Razmotrimo prvi primjer; ovdje smo stvorili naziv stupca 'SVE' koji je kombinirao dva stupca. Adresa i kategorija. Stupac 'SVI' broji vrijednosti u oba stupca zajedno. Stupac adrese je grupiran kao 'dodaj', a stupac kategorije je zasebno grupiran kao 'mačka'. Kako se nazivi stupaca obje korištene tablice mogu međusobno podudarati. Dakle, svakom stupcu odgovarajuće tablice pristupa određeni objekt.

Uvjet primijenjen na naredbu ovisi o ID-u i broju naloga. Ako su i ID i broj naloga isti, podaci se dohvaćaju. Slično tome, dodatni uvjet je također dodan za ime.

>> SELECT o.address, category, count (*) AS “ALL”, GROUPING(o.address) AS “add” , GROUPING (category ) AS “cat” FROM items I, orders o gdje i.order_no = o. order_id AND i.address= 'Lahore' GROUP BY CUBE (o.address, category) ORDER BY 1, 2;

Za grad Lahore odabrana je jedna kategorija. Postoje 4 mogućnosti. Ponekad je igračka prisutna, ali ne i adresa. I obrnuto. Ali postoji vrijeme u kojem su prisutne i kategorija i adresa.

Sada, ako promijenimo stanje imena iz tablice i zamijenimo tablicu s drugom. “Adresa.artikla” zamjenjuje se s “adresa.narudžbe”, tada je rezultat drugačiji.

Zaključak

Klauzula 'Postgresql group by' koristi se za primjenu bilo kojeg agregatnog operatora na skupne podatke. Ovaj članak koristi klauzulu grupiranje po klauzuli s funkcijom brojanja, spajanja te odabirom i grupiranjem više stupaca. Siguran sam da će ovaj vodič biti najbolji način razumijevanja za čitatelje.