logo

GROUP BY proti ORDER BY

Ta članek pojasnjuje celoten pregled klavzule GROUP BY in ORDER BY. Uporabljajo se predvsem za organiziranje podatkov, pridobljenih s poizvedbami SQL. Razlika med temi stavki je eno najpogostejših mest, kjer se pri učenju zataknemo SQL . Glavna razlika med njima je v tem klavzula GROUP BY je uporabna, kadar želimo uporabiti združevalne funkcije za več kot en nabor vrstic. Klavzula ORDER BY je uporabna, kadar želimo pridobiti podatke, pridobljene s poizvedbo, v vrstnem redu razvrščanja . Pred primerjavo bomo najprej spoznali te klavzule SQL.

GROUP BY proti ORDER BY

Klavzula ORDER BY

Klavzula ORDER BY se uporablja v poizvedbah SQL za razvrščanje podatkov, ki jih vrne poizvedba, v naraščajočem ali padajočem vrstnem redu. Če izpustimo vrstni red razvrščanja, privzeto razvrsti povzetek v naraščajočem vrstnem redu. Klavzulo ORDER BY, tako kot klavzulo GROUP BY, lahko uporabite v povezavi s stavkom SELECT. ASC označuje naraščajoči vrstni red, medtem ko OPIS označuje padajoči vrstni red.

Sledi sintaksa za uporabo stavka ORDER BY v stavku SQL:

niz v znak
 SELECT expressions FROM tables [WHERE conditions] ORDER BY expression [ ASC | DESC ]; 

Razumejmo, kako deluje klavzula ORDER BY s pomočjo naslednjega primera. Recimo, da imamo mizo razvijalec ki vsebuje naslednje podatke:

GROUP BY proti ORDER BY

Vidimo lahko, da ti rezultati niso prikazani organizirano. Recimo, da želimo rezultate organizirati v naraščajočem ali padajočem vrstnem redu glede na stolpec stanja . V tem primeru bi potrebovali ukaz ORDER BY, da bi dobili želeni rezultat. To lahko storimo tako, da izvedemo ukaz na naslednji način:

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

Tukaj je rezultat, kjer bomo dobili želene rezultate:

GROUP BY proti ORDER BY

GROUP BY klavzula

Klavzula GROUP BY se uporablja v poizvedbah SQL za organiziranje podatkov, ki imajo enake vrednosti atributov. Običajno ga uporabljamo s stavkom SELECT. Vedno si moramo zapomniti, da moramo klavzulo GROUP BY postaviti za klavzulo WHERE. Poleg tega je postavljen pred klavzulo ORDER BY.

To klavzulo lahko pogosto uporabimo v sodelovanju z združevalnimi funkcijami, kot so SUM, AVG, MIN, MAX in COUNT, za izdelavo povzetkov poročil iz baze podatkov. Pomembno si je zapomniti, da se mora atribut v tem členu pojaviti v členu SELECT, ne pod agregatno funkcijo. Če bi to storili, bi bila poizvedba napačna. Posledično se klavzula GROUP BY vedno uporablja v povezavi s klavzulo SELECT. Poizvedba za klavzulo GROUP BY je združena poizvedba in vrne eno vrstico za vsak združen predmet.

linux bližnjice

Sledi sintaksa za uporabo člena GROUP BY v stavku SQL:

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

Razumejmo, kako deluje klavzula GROUP BY s pomočjo primera. Tukaj bomo to prikazali z isto tabelo.

Recimo, da želimo vedeti povprečna plača razvijalca v določeni državi in organizirajte rezultate v padajočem vrstnem redu glede na stolpec stanja. V tem primeru bi potrebovali ukaz GROUP BY in ORDER BY, da bi dobili želeni rezultat. To lahko storimo tako, da izvedemo ukaz na naslednji način:

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

Ta poizvedba je sprva oblikovala vmesni rezultat, ki je združil stanje. Naprej, AVG se izvede za vsako skupino stanj, nato razvrsti rezultat v padajočem vrstnem redu in na koncu bomo dobili želene rezultate, kot je prikazano spodaj:

GROUP BY proti ORDER BY

Ključne razlike med GROUP BY in ORDER BY

Spodaj so ključne razlike med klavzulo Združi po in Uredi po:

  • Klavzula Group By se uporablja za združevanje podatkov na podlagi iste vrednosti v določenem stolpcu. Po drugi strani klavzula ORDER BY razvrsti rezultat in ga prikaže v naraščajočem ali padajočem vrstnem redu.
  • Za uporabo funkcije Group By je obvezna uporaba agregatne funkcije. Po drugi strani pa uporaba združevalne funkcije ni obvezna za uporabo možnosti Naroči po.
  • Atribut ne more biti pod stavkom GROUP BY pod združevalno funkcijo, medtem ko je atribut lahko pod stavkom ORDER BY pod združevalno funkcijo.
  • Klavzula Group By nadzira predstavitev tuplov, kar pomeni, da se združevanje izvede na podlagi podobnosti med vrednostmi atributov vrstice. Nasprotno pa klavzula ORDER BY nadzira predstavitev stolpcev, kar pomeni, da se razvrščanje ali razvrščanje izvede na podlagi vrednosti atributa stolpca v naraščajočem ali padajočem vrstnem redu.
  • GROUP BY je vedno postavljen za stavkom WHERE, vendar pred stavkom ORDER BY. Po drugi strani pa se ORDER BY vedno uporablja za stavkom GROUP BY.

Primerjalni grafikon GROUP BY proti ORDER BY

Naslednja primerjalna tabela na hitro razloži njihove glavne razlike:

SN ZDRUŽI PO NAROČI PO
1. Uporablja se za združevanje vrstic z enakimi vrednostmi. Nabor rezultatov razvrsti v naraščajočem ali padajočem vrstnem redu.
2. Morda je dovoljeno v stavku CREATE VIEW. Ni dovoljeno v stavku CREATE VIEW
3. Nadzoruje predstavitev vrstic. Nadzoruje predstavitev stolpcev.
4. Atribut ne more biti pod združevalno funkcijo pod stavkom GROUP BY. Atribut je lahko pod združevalno funkcijo pod stavkom ORDER BY.
5. Vedno se uporablja pred klavzulo ORDER BY v stavku SELECT. Vedno se uporablja za klavzulo GROUP BY v stavku SELECT.
6. V GROUP BY je obvezna uporaba agregatnih funkcij. Uporaba agregatnih funkcij v ORDER BY ni obvezna.
7. Tu se združevanje izvede na podlagi podobnosti med vrednostmi atributov vrstice. Tukaj je nabor rezultatov razvrščen glede na vrednosti atributa stolpca v naraščajočem ali padajočem vrstnem redu.

Zaključek

V tem članku primerjamo klavzuli GROUP BY in ORDER BY. Oba stavka sta izjemno uporabni funkciji zbirke podatkov SQL. Ko želimo oblikovati skupino vrstic, uporabimo klavzulo GROUP BY. Če želimo podatke organizirati v naraščajočem ali padajočem vrstnem redu glede na določen stolpec, uporabimo klavzulo ORDER BY. Nimata nobene povezave, ker se oba uporabljata za dva različna namena. Lahko pa jih kombiniramo, da služijo nekemu posebnemu namenu, ali pa jih uporabimo posamično, odvisno od okoliščin. Te klavzule lahko uporabimo samo s stavkom SELECT.

cimet vs mate