Kuidas kasutada SQL-i ORDER BY-klauslit
SQL-i käsk ORDER BY võimaldab teil sorteerida otsingutulemusi vastavalt oma vajadustele kas kasvavas või kahanevas järjekorras. Sihttabeli andmete sorteerimine ridadesse ja veergudesse muudab tulemused selgemaks ja loetavamaks. See omakorda optimeerib ja kiirendab andmete analüüsi ning päringuid keerulistes andmekogumites.
Mis on SQL ORDER BY?
SQL ORDER BY abil saate sorteerida andmeid ja tulemusi nii lihtsate kui ka keerukate andmekogumite puhul. Selle käsuga saate määrata, kuidas andmed sihttabelis järjestatakse. Lisaks saate määrata, kas andmed sorteeritakse kasvavas või kahanevas järjekorras. Seega aitab ORDER BY tagada selged ja kergesti loetavad päringutulemused.
Vaikimisi kuvab ORDER BY tulemused kasvavas järjekorras, st A–Z või väikseimast suurima väärtuseni. Kui soovid tulemusi kahanevas järjekorras, võid kasutada valikulist märksõna DESC. Saad tulemuste jaoks määrata ühe või mitu sihtveergu.
SQL ORDER BY on oluline korrapäraste ja kiirete päringute tegemiseks. Seda kasutatakse sageli koos SELECT-, WHERE- ja muude SQL-operaatorite ning funktsioonidega, nagu näiteks GROUP BY.
Soovid SQL-ist paremini aru saada, kuid ei tea, kust alustada? Meie näidetega varustatud SQL-i sissejuhatus muudab selle populaarse andmebaasikeele õppimise alustamise 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)sqlKui sisestate pärast ORDER BY ainult ühe veeru, saate ühe veeru sorteeritud tulemustega. Kui sisestate rohkem kui ühe veeru, sorteeritakse tulemused veeru A järgi. Kui veerus A on mõnes reas identsed kanded, sorteeritakse need read veeru B järgi.
Seda süntaksit saab täiendada täiendavate operaatorite ja parameetritega. Näiteks klauslit WHERE saab kasutada päringutulemuste kitsendamiseks vajalike kriteeriumide määratlemiseks. 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)sqlVõite kasutada ka järgmisi parameetreid:
SELECT: Saad kasutada käsku SELECT, et määrata, milliseid andmeid soovid analüüsida. Kasuta tärni*, et pärida kogu andmekogumit, või sisesta veergude nimed, et töötada just nende veergudega.FROM: Määrab, millisest tabelist soovite andmeid pärida.WHERE: WHERE on valikuline klausel, millega määratakse otsingukriteeriumid, mis kitsendavad tulemusi.WHEREsaate kasutada operaatoreid nagu=, LIKE või NOT.ORDER BY: Määrab, millise veeru järgi soovite tulemusi sorteerida. Kui teASCvõiDESCei lisa, sorteeritakse tulemused vaikimisi kasvavas järjekorras.
Sõltuvalt andmebaasist sorteerib ORDER BY NULL-väärtusi automaatselt või vastavalt valitud sorteerimisjärjekorrale. SQLite’is, MySQLis ja SQL Serveris käsitletakse NULL-väärtusi madalaimate väärtustena. See tähendab, et need kuvatakse kasvavas tulemuste järjestuses alguses. Oracle’is ja PostgreSQLis käsitletakse NULL-väärtusi kõrgeimate väärtustena. Seega kuvatakse need kasvavas tulemuste järjestuses lõpus.
Milleks saab SQL ORDER BY kasutada?
Siin on mõned SQL ORDER BY praktilised kasutusnäited:
- Tooteteabe sorteerimine tootenime, kategooria või hinna järgi
- Tehingute sorteerimine summa, kuupäeva või nime järgi
- Tellimuste sorteerimine summa või hinnangute järgi
- Töötajate sorteerimine palga, lepingute, tulemuslikkuse või osakonna järgi
- Varude loetlemine summa või nime järgi
- Saadetiste sorteerimine postikoodi või jälgimisnumbri järgi
- Kliendinimekirjade sorteerimine piirkonna või vanuse järgi
Näited SQL ORDER BY kohta
Nüüd vaatame kolme näidet, milles kasutatakse ORDER BY.
Toodete järjestamine hinna järgi
Selles näites sorteerime kategooria „Juuksed” tooted hinna järgi kasvavas järjekorras. Numbritega FROM ja WHERE määrame, milliseid tooteid soovime sorteerida. Numbritega ORDER BY ja ASC määrame, et soovime neid sorteerida hinna järgi kasvavas järjekorras. Süntaks on järgmine:
SELECT *
FROM Products
WHERE Category = 'Hair'
ORDER BY Price ASC;sqlKlientide filtreerimine
Oletame, et töötate tabelis nimega „Kliendid” ja soovite järjestada kõik Ühendkuningriigist pärit kliendid nende nime järgi. Soovite neid järjestada tähestikulises vastupidises järjekorras Z-st A-ni, seega lisate käskule ORDER BY DESC.
SELECT *
FROM Customers
WHERE Country = 'UK'
ORDER BY Name DESC;sqlSorteerimine mitme kategooria järgi
Selles näites soovid sorteerida kategooria „Elektroonika” tooteid tellimuse koguse järgi. Kui tellimuste kogused on ühesugused, soovid neid sorteerida selle järgi, millisest riigist tellimus pärineb.
SELECT *
FROM Products
WHERE Category = 'Electronics'
ORDER BY OrderQuantity ASC, Country DESC;sqlKas SQL ORDER BY-le on alternatiive?
SQL-is ei ole ORDER BY samasuguse funktsiooniga alternatiive. Siiski on GROUP BY SQL-käsk, mida kasutatakse sageli koos ORDER BY. GROUP BY saab kirjeid rühmitada kategooriate järgi ning ORDER BY saab neid kirjeid lisaks sorteerida.
Näide: Oletame, et soovite rühmitada klientide tellimuste koguseid riigi järgi ja seejärel kasutada koondfunktsiooni AVG, et järjestada 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;sqlSamuti saab HAVING-lauset kasutada, et filtreerida järjestatud kirjeid otsingukriteeriumide ja tingimuste alusel. LIMIT abil saab tulemusjoukku piirata teatud arvuni.