logo

GROUP BY naspram ORDER BY

Ovaj članak objašnjava potpuni pregled klauzule GROUP BY i ORDER BY. Uglavnom se koriste za organiziranje podataka dobivenih SQL upitima. Razlika između ovih klauzula jedno je od najčešćih mjesta na kojima se može zapeti pri učenju SQL . Glavna razlika među njima je u tome što klauzula GROUP BY primjenjiva je kada želimo koristiti agregatne funkcije za više od jednog skupa redaka. Klauzula ORDER BY primjenjiva je kada želimo dobiti podatke dobivene upitom u redoslijedu sortiranja . Prije usporedbe prvo ćemo upoznati ove SQL klauzule.

GROUP BY naspram ORDER BY

ORDER BY klauzula

Klauzula ORDER BY koristi se u SQL upitima za sortiranje podataka koje vraća upit uzlaznim ili silaznim redoslijedom. Ako izostavimo redoslijed sortiranja, prema zadanim postavkama sortira sažeti rezultat uzlaznim redoslijedom. Klauzula ORDER BY, kao i klauzula GROUP BY, može se koristiti zajedno s naredbom SELECT. ASC označava uzlazni redoslijed, dok OPIS označava silazni redoslijed.

Slijedi sintaksa za korištenje klauzule ORDER BY u SQL izjavi:

što je const u Javi
 SELECT expressions FROM tables [WHERE conditions] ORDER BY expression [ ASC | DESC ]; 

Shvatimo kako klauzula ORDER BY funkcionira uz pomoć sljedećeg primjera. Pretpostavimo da imamo stol programer koji sadrži sljedeće podatke:

GROUP BY naspram ORDER BY

Vidimo da ti rezultati nisu prikazani na organiziran način. Pretpostavimo da želimo organizirati rezultate uzlaznim ili silaznim redoslijedom na temelju stupac stanja . U tom slučaju bi nam trebala naredba ORDER BY da dobijemo željeni rezultat. To možemo učiniti izvršavanjem naredbe na sljedeći način:

 mysql> SELECT D_name, D_state, D_salary FROM developers ORDER BY D_state ASC; 

Ovo je rezultat gdje ćemo dobiti željene rezultate:

GROUP BY naspram ORDER BY

GROUP BY klauzula

Klauzula GROUP BY koristi se u SQL upitima za organiziranje podataka koji imaju iste vrijednosti atributa. Obično ga koristimo s naredbom SELECT. Uvijek treba imati na umu da klauzulu GROUP BY moramo staviti nakon klauzule WHERE. Osim toga, nalazi se ispred klauzule ORDER BY.

Ovu klauzulu često možemo koristiti u suradnji s agregatnim funkcijama kao što su SUM, AVG, MIN, MAX i COUNT za izradu sažetih izvješća iz baze podataka. Važno je zapamtiti da se atribut u ovoj klauzuli mora pojaviti u klauzuli SELECT, a ne pod agregatnom funkcijom. Ako to učinimo, upit bi bio netočan. Kao rezultat toga, klauzula GROUP BY uvijek se koristi zajedno s klauzulom SELECT. Upit za klauzulu GROUP BY je grupirani upit i vraća jedan redak za svaki grupirani objekt.

poravnavanje slika u css-u

Slijedi sintaksa za korištenje klauzule GROUP BY u SQL izjavi:

 SELECT column_name, function(column_name) FROM table_name WHERE condition GROUP BY column_name; 

Razmotrimo kako radi klauzula GROUP BY uz pomoć primjera. Ovdje ćemo to demonstrirati istom tablicom.

Pretpostavimo da želimo znati prosječna plaća programera u određenoj državi i organizirati rezultate silaznim redoslijedom na temelju stupca stanja. U tom slučaju trebat će nam i naredba GROUP BY i ORDER BY da bismo dobili željeni rezultat. To možemo učiniti izvršavanjem naredbe na sljedeći način:

 mysql> SELECT D_state, avg(D_salary) AS salary FROM developers GROUP BY D_state ORDER BY D_state DESC; 

Ovaj upit je inicijalno formirao međurezultat koji je grupirao stanje. Dalje, PROSJ funkcija se izvodi na svakoj grupi stanja, zatim sortirati rezultat silaznim redoslijedom, i na kraju ćemo dobiti željene rezultate kao što je prikazano u nastavku:

GROUP BY naspram ORDER BY

Ključne razlike između GROUP BY i ORDER BY

Sljedeće su ključne razlike između klauzule Group By i Order By:

  • Klauzula Group By koristi se za grupiranje podataka na temelju iste vrijednosti u određenom stupcu. Klauzula ORDER BY, s druge strane, sortira rezultat i prikazuje ga uzlaznim ili silaznim redoslijedom.
  • Obavezno je koristiti agregatnu funkciju za korištenje Grupiranja prema. S druge strane, nije obavezno koristiti agregatnu funkciju za korištenje Order By.
  • Atribut ne može biti pod naredbom GROUP BY pod agregatnom funkcijom, dok atribut može biti pod naredbom ORDER BY pod agregatnom funkcijom.
  • Klauzula Group By kontrolira prezentaciju torki što znači da se grupiranje vrši na temelju sličnosti između vrijednosti atributa retka. Nasuprot tome, klauzula ORDER BY kontrolira prezentaciju stupaca što znači da se poredak ili sortiranje vrši na temelju vrijednosti atributa stupca bilo uzlaznim bilo silaznim redoslijedom.
  • GROUP BY se uvijek postavlja nakon WHERE klauzule, ali prije ORDER BY naredbe. S druge strane, ORDER BY se uvijek koristi nakon naredbe GROUP BY.

Tablica usporedbe GROUP BY nasuprot ORDER BY

Sljedeća usporedna tablica na brz način objašnjava njihove glavne razlike:

S N GRUPIRAJ PO NARUČI PO
1. Koristi se za grupiranje redaka koji imaju iste vrijednosti. Razvrstava skup rezultata uzlaznim ili silaznim redoslijedom.
2. Može biti dopušteno u naredbi CREATE VIEW. Nije dopušteno u izjavi CREATE VIEW
3. Kontrolira prezentaciju redaka. Kontrolira prezentaciju stupaca.
4. Atribut ne može biti pod agregatnom funkcijom pod naredbom GROUP BY. Atribut može biti pod agregatnom funkcijom pod naredbom ORDER BY.
5. Uvijek se koristi prije klauzule ORDER BY u naredbi SELECT. Uvijek se koristi nakon klauzule GROUP BY u naredbi SELECT.
6. Obavezno je koristiti agregatne funkcije u GROUP BY. Nije obavezno koristiti agregatne funkcije u ORDER BY.
7. Ovdje se grupiranje vrši na temelju sličnosti među vrijednostima atributa reda. Ovdje se skup rezultata sortira na temelju vrijednosti atributa stupca, bilo uzlaznim ili silaznim redoslijedom.

Zaključak

U ovom se članku uspoređuju odredbe GROUP BY i ORDER BY. Obje su klauzule izuzetno korisne značajke SQL baze podataka. Kada želimo formirati grupu redaka, koristimo klauzulu GROUP BY. Ako želimo organizirati podatke uzlaznim ili silaznim redoslijedom na temelju određenog stupca, koristimo klauzulu ORDER BY. Oni nemaju nikakav odnos jer se oba koriste u dvije različite svrhe. Međutim, možemo ih kombinirati da služe nekoj posebnoj svrsi ili ih možemo koristiti pojedinačno, ovisno o okolnostima. Ove klauzule možemo koristiti samo s naredbom SELECT.

sinkronizacija niti