Kaip naudoti SQL ORDER BY
SQL komanda ORDER BY leidžia rūšiuoti paieškos rezultatus pagal individualius poreikius – didėjančia arba mažėjančia tvarka. Rūšiuojant tikslinės lentelės duomenis pagal eilutes ir stulpelius, rezultatai tampa aiškesni ir lengviau suprantami. Tai savo ruožtu optimizuoja ir pagreitina duomenų analizę bei užklausų vykdymą sudėtinguose duomenų rinkiniuose.
Kas yra SQL ORDER BY?
Naudodami SQL ORDER BY galite rūšiuoti duomenis ir rezultatus iš paprastų ar sudėtingų duomenų rinkinių. Ši komanda leidžia nustatyti, kaip duomenys bus išdėstyti tikslinėje lentelėje. Be to, galite nurodyti, ar duomenys bus rūšiuojami didėjančia, ar mažėjančia tvarka. Taigi ORDER BY padeda pateikti aiškius ir lengvai suprantamus užklausos rezultatus.
Pagal numatytuosius nustatymus ORDER BY pateikia rezultatus didėjančia tvarka, t. y. nuo A iki Z arba nuo mažiausios iki didžiausios vertės. Jei norite, kad rezultatai būtų pateikiami mažėjančia tvarka, galite naudoti papildomą raktinį žodį DESC. Rezultatams galite nurodyti vieną arba kelis tikslinius stulpelius.
SQL ORDER BY yra svarbus norint vykdyti sistemingus ir greitus užklausimus. Jis dažnai naudojamas kartu su SELECT, WHERE ir kitais SQL operatoriais bei funkcijomis, pavyzdžiui, GROUP BY.
Norite geriau suprasti SQL, bet nežinote, nuo ko pradėti? Mūsų SQL įvadas su pavyzdžiais padės lengvai pradėti mokytis šios populiarios duomenų bazių kalbos.
Kokia yra SQL ORDER BY sintaksė?
SQL ORDER BY sintaksė atrodo taip:
SELECT ColumnA, ColumnB, … or *
FROM Table
ORDER BY ColumnA, ColumnB, … (optional: ASC or DESC)sqlJei po ORDER BY įvesite tik vieną stulpelį, gausite vieną stulpelį su surūšiuotais rezultatais. Jei įvesite daugiau nei vieną stulpelį, rezultatai bus surūšiuoti pagal stulpelį A. Jei stulpelyje A kai kuriose eilutėse yra vienodi įrašai, tos eilutės bus surūšiuotos pagal stulpelį B.
Šią sintaksę galite išplėsti, pritaikydami papildomus operatorius ir parametrus. Pavyzdžiui, WHERE sąlyga gali būti naudojama kriterijams, kurie susiaurina užklausos rezultatus, apibrėžti. ORDER BY ir WHERE sintaksės derinys atrodo taip:
SELECT ColumnA, ColumnB, … or *
FROM Table
WHERE ColumnA = 'SearchCondition'
ORDER BY ColumnA, ColumnB, … (optional: ASC or DESC)sqlTaip pat galite naudoti šiuos parametrus:
SELECT: Naudodami komandą SELECT galite nurodyti, kuriuos duomenis norite analizuoti. Naudokite žvaigždutę*, jei norite apklausti visą duomenų rinkinį, arba įveskite stulpelių pavadinimus, jei norite dirbti su konkrečiais stulpeliais.FROM: Nurodo, iš kurios lentelės norite užklausti duomenis.WHERE: WHERE yra neprivaloma sąlyga, skirta apibrėžti paieškos kriterijus, kurie susiaurins jūsų rezultatus.WHEREsąlygoje galite naudoti operatorius, pvz.,=, LIKE arba NOT.ORDER BY: Nurodo, pagal kurią stulpelį norite rūšiuoti rezultatus. Jei nepridėsiteASCarbaDESC, rezultatai pagal numatytuosius nustatymus bus rūšiuojami didėjančia tvarka.
Priklausomai nuo duomenų bazės, ORDER BY rūšiuoja NULL reikšmes automatiškai arba pagal pasirinktą rūšiavimo tvarką. SQLite, MySQL ir SQL Server duomenų bazėse NULL reikšmės traktuojamos kaip mažiausios reikšmės. Tai reiškia, kad jos rodomos kylančiosios tvarkos rezultatų sąrašo pradžioje. Oracle ir PostgreSQL duomenų bazėse NULL reikšmės traktuojamos kaip didžiausios reikšmės. Todėl jos rodomos kylančiosios tvarkos rezultatų sąrašo pabaigoje.
Kam gali būti naudojamas SQL ORDER BY?
Štai keletas praktinių SQL ORDER BY naudojimo pavyzdžių:
- Prekių informacijos rūšiavimas pagal prekės pavadinimą, kategoriją arba kainą
- Sandorių rūšiavimas pagal sumą, datą arba pavadinimą
- Užsakymų rūšiavimas pagal sumą arba įvertinimus
- Darbuotojų rūšiavimas pagal atlyginimą, sutartis, darbo rezultatus arba skyrių
- Atsargų sąrašo sudarymas pagal kiekį arba pavadinimą
- Siuntų rūšiavimas pagal pašto kodą arba sekimo numerį
- Klientų sąrašų rūšiavimas pagal regioną arba amžių
SQL ORDER BY pavyzdžiai
Dabar pereisime prie 3 pavyzdžių, kuriuose naudojamas skaičius ORDER BY.
Prekių rūšiavimas pagal kainą
Šiame pavyzdyje surūšiuosime „Plaukai“ kategorijos prekes didėjančia tvarka pagal kainą. FROM ir WHERE nurodome, kurias prekes norime surūšiuoti. Skaičiais ORDER BY ir ASC nurodome, kad norime jas surūšiuoti didėjančia tvarka pagal kainą. Sintaksė atrodo taip:
SELECT *
FROM Products
WHERE Category = 'Hair'
ORDER BY Price ASC;sqlKlientų filtravimas
Tarkime, dirbate su lentele „Klientai“ ir norite surūšiuoti visus klientus iš Jungtinės Karalystės pagal jų vardus. Norite juos surūšiuoti atvirkštine abėcėlės tvarka nuo Z iki A, todėl prie komandos ORDER BY pridedate DESC.
SELECT *
FROM Customers
WHERE Country = 'UK'
ORDER BY Name DESC;sqlRūšiavimas pagal kelias kategorijas
Šiame pavyzdyje norite surūšiuoti „Elektronika“ kategorijos prekes pagal užsakymo kiekį. Jei užsakymų kiekiai yra vienodi, norite juos surūšiuoti pagal šalį, iš kurios buvo pateiktas užsakymas.
SELECT *
FROM Products
WHERE Category = 'Electronics'
ORDER BY OrderQuantity ASC, Country DESC;sqlAr yra SQL ORDER BY alternatyvų?
SQL kalboje nėra alternatyvų, kurios atliktų tą pačią funkciją kaip ORDER BY. Tačiau „GROUP BY“ yra SQL komanda, kuri dažnai naudojama kartu su ORDER BY. GROUP BY gali būti naudojama įrašams sugrupuoti pagal kategorijas, o ORDER BY gali papildomai tuos įrašus surūšiuoti.
Pavyzdys: tarkime, norite sugrupuoti klientų užsakymų kiekius pagal šalį, o tada naudodami agregavimo funkciją AVG surūšiuoti pagal vidutinį užsakymo kiekį. Sintaksė atrodytų taip:
SELECT Country, AVG(OrderQuantity)
FROM Customers
WHERE Category = 'Electronics'
GROUP BY Country
ORDER BY AVG(OrderQuantity) ASC;sqlTaip pat galite naudoti HAVING sąlygą, kad surūšiuotus įrašus filtruotumėte pagal paieškos kriterijus ir sąlygas. LIMIT gali būti naudojamas rezultatų rinkiniui apriboti iki tam tikro skaičiaus.