Z ukazom SQL ORDER BY lahko rezultate iskanja raz­vr­sti­te glede na svoje potrebe, in sicer v na­ra­šča­jo­čem ali padajočem vrstnem redu. Raz­vr­sti­tev podatkov v ciljni tabeli po vrsticah in stolpcih lahko naredi rezultate pre­gle­dnej­še in lažje berljive. To pa po­sle­dič­no op­ti­mi­zi­ra in pospeši analizo podatkov ter poizvedbe v za­ple­te­nih po­dat­kov­nih nizih.

Kaj je SQL ORDER BY?

Z uporabo SQL ORDER BY lahko raz­vr­sti­te podatke in rezultate iz pre­pro­stih ali za­ple­te­nih po­dat­kov­nih nizov. Ta ukaz vam omogoča, da določite, kako se podatki raz­vr­sti­jo v ciljni tabeli. Poleg tega lahko določite, ali naj se podatki raz­vr­sti­jo v na­ra­šča­jo­čem ali padajočem vrstnem redu. Tako vam ORDER BY pomaga za­go­to­vi­ti jasne in pregledne rezultate poizvedb.

Privzeto ORDER BY prikaže rezultate v na­ra­šča­jo­čem vrstnem redu, torej od A do Z ali od najmanjše do največje vrednosti. Če želite rezultate v padajočem vrstnem redu, lahko uporabite izbirno ključno besedo DESC. Za rezultate lahko določite enega ali več ciljnih stolpcev.

SQL ORDER BY je pomemben za izvajanje struk­tu­ri­ra­nih in hitrih poizvedb. Pogosto se uporablja skupaj s ključnimi besedami SELECT, WHERE in drugimi SQL-ope­ra­ter­ji ter funk­ci­ja­mi, kot je GROUP BY.

Tip

Želite bolje razumeti jezik SQL, vendar ne veste, kje začeti? Naš uvod v jezik SQL s primeri vam olajša začetek učenja tega pri­lju­blje­ne­ga jezika za upra­vlja­nje po­dat­kov­nih baz.

Kakšna je sintaksa jezika SQL ORDER BY?

Sintaksa jezika SQL ORDER BY je naslednja:

SELECT  ColumnA, ColumnB, …  or *
FROM  Table
ORDER BY  ColumnA, ColumnB, …  (optional: ASC or DESC)
sql
Note

Če vnesete le en stolpec po ORDER BY, boste dobili en stolpec z raz­vr­šče­ni­mi rezultati. Če vnesete več kot en stolpec, bodo rezultati raz­vr­šče­ni na podlagi stolpca A. Če stolpec A v nekaterih vrsticah vsebuje enake vrednosti, bodo te vrstice raz­vr­šče­ne na podlagi stolpca B.

To sintakso lahko razširite z dodatnimi ope­ra­tor­ji in parametri. Klavzulo WHERE lahko na primer uporabite za opre­de­li­tev meril, ki zožijo rezultate poizvedbe. Sintaksa ORDER BY v kom­bi­na­ci­ji s WHERE je naslednja:

SELECT  ColumnA, ColumnB, …  or *
FROM  Table
WHERE  ColumnA  =  'SearchCondition'
ORDER BY  ColumnA, ColumnB, …  (optional: ASC or DESC)
sql

Uporabite lahko tudi naslednje parametre:

  • SELECT: Z ukazom SELECT lahko določite, katere podatke želite ana­li­zi­ra­ti. Z zvezdico * lahko po­i­zve­du­je­te celoten niz podatkov, ali pa vnesete imena stolpcev, da delate s temi stolpci.
  • FROM: Določa, iz katere tabele želite poiskati podatke.
  • WHERE: WHERE je neobvezna klavzula za opre­de­li­tev iskalnih meril, ki bodo zožila vaše rezultate. V klavzuli WHERE lahko uporabite ope­ra­ter­je, kot so =, LIKE ali NOT.
  • ORDER BY: Določa, po katerem stolpcu želite raz­vr­sti­ti rezultate. Če ne dodate ASC ali DESC, bodo rezultati privzeto raz­vr­šče­ni v na­ra­šča­jo­čem vrstnem redu.
Note

Glede na bazo podatkov ORDER BY vrednosti NULL raz­vr­sti­jo samodejno ali v skladu z izbranim vrstnim redom. V SQLite, MySQL in SQL Serverju se vrednosti NULL obrav­na­va­jo kot najnižje vrednosti. To pomeni, da se v na­ra­šča­jo­čem vrstnem redu re­zul­ta­tov pojavijo na začetku. V Oracle in Po­stgre­SQL se vrednosti NULL obrav­na­va­jo kot najvišje vrednosti. Zato se v na­ra­šča­jo­čem vrstnem redu re­zul­ta­tov pojavijo na koncu.

Za kaj se lahko uporablja SQL ORDER BY?

Tukaj je nekaj primerov praktične uporabe SQL ORDER BY:

  • Raz­vr­šča­nje podatkov o izdelkih po imenu izdelka, ka­te­go­ri­ji ali ceni
  • Raz­vr­šča­nje tran­sak­cij po znesku, datumu ali imenu
  • Raz­vr­šča­nje naročil po znesku ali ocenah
  • Raz­vr­šča­nje za­po­sle­nih po plači, pogodbah, uspe­šno­sti ali oddelku
  • Seznam zaloge po znesku ali imenu
  • Raz­vr­šča­nje pošiljk po poštni številki ali številki za sledenje
  • Raz­vr­šča­nje seznamov strank po regiji ali starosti

Primeri SQL ORDER BY

Sedaj si bomo ogledali 3 primere z uporabo ORDER BY.

Raz­vr­šča­nje izdelkov po ceni

V tem primeru bomo izdelke iz ka­te­go­ri­je »Lasje« raz­vr­sti­li po na­ra­šča­jo­čem vrstnem redu glede na ceno. S FROM in WHERE določimo, katere izdelke želimo raz­vr­sti­ti. S ORDER BY in ASC pa določimo, da jih želimo raz­vr­sti­ti po na­ra­šča­jo­čem vrstnem redu glede na ceno. Sintaksa je naslednja:

SELECT  *
FROM  Products
WHERE  Category  = 'Hair'
ORDER BY  Price  ASC;
sql

Fil­tri­ra­nje strank

Recimo, da delate v tabeli z imenom »Stranke« in želite vse stranke iz Velike Britanije raz­vr­sti­ti po imenih. Želite jih raz­vr­sti­ti v obratnem abecednem vrstnem redu, od Z do A, zato k ukazu ORDER BY dodate DESC.

SELECT  *
FROM  Customers
WHERE  Country = 'UK'
ORDER BY  Name  DESC;
sql

Raz­vr­šča­nje po več ka­te­go­ri­jah

V tem primeru želite izdelke iz ka­te­go­ri­je »Ele­k­tro­ni­ka« raz­vr­sti­ti glede na količino naročila. Če je količina naročila enaka, jih želite raz­vr­sti­ti glede na državo, iz katere prihaja naročilo.

SELECT  *
FROM  Products
WHERE  Category  =  'Electronics'
ORDER BY  OrderQuantity ASC,  Country  DESC;
sql

Ali obstajajo al­ter­na­ti­ve za SQL ORDER BY?

V jeziku SQL ni drugih ukazov z enako funkcijo kot ORDER BY. Vendar pa je GROUP BY ukaz v jeziku SQL, ki se pogosto uporablja v kom­bi­na­ci­ji z ORDER BY. GROUP BY je mogoče zapise raz­vr­sti­ti v skupine na podlagi kategorij, ORDER BY pa te zapise dodatno razvrsti.

Primer: Recimo, da želite količine naročil strank raz­vr­sti­ti po državah in nato s pomočjo agre­ga­cij­ske funkcije AVG raz­vr­sti­ti po povprečni količini naročila. Sintaksa za to bi bila naslednja:

SELECT  Country, AVG(OrderQuantity)
FROM  Customers
WHERE  Category = 'Electronics'
GROUP BY  Country
ORDER BY  AVG(OrderQuantity) ASC;
sql

Poleg tega lahko s klavzulo HAVING fil­tri­ra­te raz­vr­šče­ne zapise na podlagi iskalnih meril in pogojev. LIMIT lahko omejite nabor re­zul­ta­tov na določeno število.

Go to Main Menu