SQL-i käsk ORDER BY võimaldab teil sor­tee­rida ot­sin­gu­tu­le­musi vastavalt oma va­ja­dus­tele kas kasvavas või kahanevas jär­je­kor­ras. Siht­ta­beli andmete sor­tee­ri­mine ridadesse ja veer­gu­desse muudab tulemused selgemaks ja loe­ta­va­maks. See omakorda op­ti­mee­rib ja kiirendab andmete analüüsi ning päringuid kee­ru­lis­tes and­me­ko­gu­mi­tes.

Mis on SQL ORDER BY?

SQL ORDER BY abil saate sor­tee­rida andmeid ja tulemusi nii lihtsate kui ka keerukate and­me­ko­gu­mite puhul. Selle käsuga saate määrata, kuidas andmed siht­ta­be­lis jär­jes­ta­takse. Lisaks saate määrata, kas andmed sor­tee­ri­takse kasvavas või kahanevas jär­je­kor­ras. Seega aitab ORDER BY tagada selged ja kergesti loetavad pä­rin­gu­tu­le­mu­sed.

Vaikimisi kuvab ORDER BY tulemused kasvavas jär­je­kor­ras, st A–Z või väik­sei­mast suurima väär­tu­seni. Kui soovid tulemusi kahanevas jär­je­kor­ras, võid kasutada va­li­ku­list märksõna DESC. Saad tulemuste jaoks määrata ühe või mitu siht­veergu.

SQL ORDER BY on oluline kor­ra­pä­raste ja kiirete päringute te­ge­miseks. Seda ka­su­ta­takse sageli koos SELECT-, WHERE- ja muude SQL-ope­raa­to­rite ning funkt­sioo­ni­dega, nagu näiteks GROUP BY.

Tip

Soovid SQL-ist paremini aru saada, kuid ei tea, kust alustada? Meie näidetega va­rus­ta­tud SQL-i sis­se­ju­ha­tus muudab selle po­pu­laarse and­me­baasi­keele õppimise alus­ta­mise lihtsaks.

Milline on SQL ORDER BY süntaks?

SQL ORDER BY süntaks on järgmine:

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

Kui sisestate pärast ORDER BY ainult ühe veeru, saate ühe veeru sor­tee­ri­tud tu­le­mus­tega. Kui sisestate rohkem kui ühe veeru, sor­tee­ri­takse tulemused veeru A järgi. Kui veerus A on mõnes reas identsed kanded, sor­tee­ri­takse need read veeru B järgi.

Seda süntaksit saab täiendada täien­da­vate ope­raa­to­rite ja pa­ra­meet­ri­tega. Näiteks klauslit WHERE saab kasutada pä­rin­gu­tu­le­muste kit­sen­da­miseks vajalike kri­tee­riumide mää­rat­le­miseks. Süntaks, mis ühendab ORDER BY ja WHERE, näeb välja järgmine:

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

Võite kasutada ka järgmisi pa­ra­meetreid:

  • SELECT: Saad kasutada käsku SELECT, et määrata, milliseid andmeid soovid ana­lüü­sida. Kasuta tärni *, et pärida kogu and­me­ko­gu­mit, või sisesta veergude nimed, et töötada just nende veer­gu­dega.
  • FROM: Määrab, millisest tabelist soovite andmeid pärida.
  • WHERE: WHERE on va­li­ku­line klausel, millega mää­ra­takse ot­sin­gukri­tee­riu­mid, mis kit­sen­da­vad tulemusi. WHERE saate kasutada ope­raa­to­reid nagu =, LIKE või NOT.
  • ORDER BY: Määrab, millise veeru järgi soovite tulemusi sor­tee­rida. Kui te ASC või DESC ei lisa, sor­tee­ri­takse tulemused vaikimisi kasvavas jär­je­kor­ras.
Note

Sõltuvalt and­me­baasist sorteerib ORDER BY NULL-väärtusi au­to­maat­selt või vastavalt valitud sor­tee­ri­mis­jär­je­kor­rale. SQLite’is, MySQLis ja SQL Serveris kä­sit­le­takse NULL-väärtusi ma­da­lai­mate väär­tus­tena. See tähendab, et need kuvatakse kasvavas tulemuste jär­jes­tuses alguses. Oracle’is ja PostgreSQ­Lis kä­sit­le­takse NULL-väärtusi kõr­gei­mate väär­tus­tena. Seega kuvatakse need kasvavas tulemuste jär­jes­tuses lõpus.

Milleks saab SQL ORDER BY kasutada?

Siin on mõned SQL ORDER BY prak­ti­li­sed ka­su­tus­näi­ted:

  • Too­te­teabe sor­tee­ri­mine tootenime, ka­te­goo­ria või hinna järgi
  • Tehingute sor­tee­ri­mine summa, kuupäeva või nime järgi
  • Tel­li­muste sor­tee­ri­mine summa või hin­nan­gute järgi
  • Töötajate sor­tee­ri­mine palga, lepingute, tu­le­mus­lik­kuse või osakonna järgi
  • Varude loet­le­mine summa või nime järgi
  • Saa­de­tiste sor­tee­ri­mine pos­ti­koodi või jäl­gi­mis­numbri järgi
  • Kliendini­me­kir­jade sor­tee­ri­mine piirkonna või vanuse järgi

Näited SQL ORDER BY kohta

Nüüd vaatame kolme näidet, milles ka­su­ta­takse ORDER BY.

Toodete jär­jes­ta­mine hinna järgi

Selles näites sor­tee­rime ka­te­goo­ria „Juuksed” tooted hinna järgi kasvavas jär­je­kor­ras. Numb­ri­tega FROM ja WHERE määrame, milliseid tooteid soovime sor­tee­rida. Numb­ri­tega ORDER BY ja ASC määrame, et soovime neid sor­tee­rida hinna järgi kasvavas jär­je­kor­ras. Süntaks on järgmine:

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

Klientide filt­ree­ri­mine

Oletame, et töötate tabelis nimega „Kliendid” ja soovite jär­jes­tada kõik Ühend­ku­ning­rii­gist pärit kliendid nende nime järgi. Soovite neid jär­jes­tada tä­hes­ti­ku­li­ses vas­tu­pi­di­ses jär­je­kor­ras Z-st A-ni, seega lisate käskule ORDER BY DESC.

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

Sor­tee­ri­mine mitme ka­te­goo­ria järgi

Selles näites soovid sor­tee­rida ka­te­goo­ria „Elekt­roo­nika” tooteid tellimuse koguse järgi. Kui tel­li­muste kogused on ühe­su­gu­sed, soovid neid sor­tee­rida selle järgi, millisest riigist tellimus pärineb.

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

Kas SQL ORDER BY-le on al­ter­na­tiive?

SQL-is ei ole ORDER BY sa­ma­su­guse funkt­sioo­niga al­ter­na­tiive. Siiski on GROUP BY SQL-käsk, mida ka­su­ta­takse sageli koos ORDER BY. GROUP BY saab kirjeid rühmitada ka­te­goo­riate järgi ning ORDER BY saab neid kirjeid lisaks sor­tee­rida.

Näide: Oletame, et soovite rühmitada klientide tel­li­muste koguseid riigi järgi ja seejärel kasutada koond­funkt­siooni AVG, et jär­jes­tada need keskmise tellimuse koguse järgi. Selleks oleks süntaks järgmine:

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

Samuti saab HAVING-lauset kasutada, et filt­ree­rida jär­jes­ta­tud kirjeid ot­sin­gukri­tee­riumide ja tin­gi­muste alusel. LIMIT abil saab tu­le­mus­joukku piirata teatud arvuni.

Go to Main Menu