SQL komanda ORDER BY leidžia rūšiuoti paieškos re­zul­ta­tus pagal in­di­vi­dua­lius poreikius – di­dė­jan­čia arba ma­žė­jan­čia tvarka. Rū­šiuo­jant tikslinės lentelės duomenis pagal eilutes ir stul­pe­lius, re­zul­ta­tai tampa aiškesni ir lengviau su­pran­ta­mi. Tai savo ruožtu op­ti­mi­zuo­ja ir pa­grei­ti­na duomenų analizę bei užklausų vykdymą su­dė­tin­guo­se duomenų rin­ki­niuo­se.

Kas yra SQL ORDER BY?

Naudodami SQL ORDER BY galite rūšiuoti duomenis ir re­zul­ta­tus iš paprastų ar sudėtingų duomenų rinkinių. Ši komanda leidžia nustatyti, kaip duomenys bus išdėstyti tiks­li­nė­je lentelėje. Be to, galite nurodyti, ar duomenys bus rū­šiuo­ja­mi di­dė­jan­čia, ar ma­žė­jan­čia tvarka. Taigi ORDER BY padeda pateikti aiškius ir lengvai su­pran­ta­mus užklausos re­zul­ta­tus.

Pagal nu­ma­ty­tuo­sius nu­sta­ty­mus ORDER BY pateikia re­zul­ta­tus di­dė­jan­čia tvarka, t. y. nuo A iki Z arba nuo ma­žiau­sios iki di­džiau­sios vertės. Jei norite, kad re­zul­ta­tai būtų pa­tei­kia­mi ma­žė­jan­čia tvarka, galite naudoti papildomą raktinį žodį DESC. Re­zul­ta­tams galite nurodyti vieną arba kelis tiks­li­nius stul­pe­lius.

SQL ORDER BY yra svarbus norint vykdyti sis­te­min­gus ir greitus už­klau­si­mus. Jis dažnai nau­do­ja­mas kartu su SELECT, WHERE ir kitais SQL ope­ra­to­riais bei funk­ci­jo­mis, pa­vyz­džiui, GROUP BY.

Tip

Norite geriau suprasti SQL, bet nežinote, nuo ko pradėti? Mūsų SQL įvadas su pa­vyz­džiais padės lengvai pradėti mokytis šios po­pu­lia­rios 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)
sql
Note

Jei po ORDER BY įvesite tik vieną stulpelį, gausite vieną stulpelį su su­rū­šiuo­tais re­zul­ta­tais. Jei įvesite daugiau nei vieną stulpelį, re­zul­ta­tai bus su­rū­šiuo­ti pagal stulpelį A. Jei stul­pe­ly­je A kai kuriose eilutėse yra vienodi įrašai, tos eilutės bus su­rū­šiuo­tos pagal stulpelį B.

Šią sintaksę galite išplėsti, pri­tai­ky­da­mi pa­pil­do­mus ope­ra­to­rius ir pa­ra­met­rus. Pa­vyz­džiui, WHERE sąlyga gali būti naudojama kri­te­ri­jams, kurie su­siau­ri­na užklausos re­zul­ta­tus, 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)
sql

Taip pat galite naudoti šiuos pa­ra­met­rus:

  • SELECT: Naudodami komandą SELECT galite nurodyti, kuriuos duomenis norite ana­li­zuo­ti. Naudokite žvaigž­du­tę *, jei norite apklausti visą duomenų rinkinį, arba įveskite stulpelių pa­va­di­ni­mus, jei norite dirbti su konk­re­čiais stul­pe­liais.
  • FROM: Nurodo, iš kurios lentelės norite užklausti duomenis.
  • WHERE: WHERE yra ne­pri­va­lo­ma sąlyga, skirta apibrėžti paieškos kri­te­ri­jus, kurie su­siau­rins jūsų re­zul­ta­tus. WHERE sąlygoje galite naudoti ope­ra­to­rius, pvz., =, LIKE arba NOT.
  • ORDER BY: Nurodo, pagal kurią stulpelį norite rūšiuoti re­zul­ta­tus. Jei ne­pri­dė­si­te ASC arba DESC, re­zul­ta­tai pagal nu­ma­ty­tuo­sius nu­sta­ty­mus bus rū­šiuo­ja­mi di­dė­jan­čia tvarka.
Note

Pri­klau­so­mai nuo duomenų bazės, ORDER BY rūšiuoja NULL reikšmes au­to­ma­tiš­kai arba pagal pa­si­rink­tą rūšiavimo tvarką. SQLite, MySQL ir SQL Server duomenų bazėse NULL reikšmės trak­tuo­ja­mos kaip ma­žiau­sios reikšmės. Tai reiškia, kad jos rodomos ky­lan­čio­sios tvarkos rezultatų sąrašo pradžioje. Oracle ir Post­g­re­SQL duomenų bazėse NULL reikšmės trak­tuo­ja­mos kaip di­džiau­sios reikšmės. Todėl jos rodomos ky­lan­čio­sios tvarkos rezultatų sąrašo pabaigoje.

Kam gali būti nau­do­ja­mas SQL ORDER BY?

Štai keletas praktinių SQL ORDER BY naudojimo pavyzdžių:

  • Prekių in­for­ma­ci­jos rū­šia­vi­mas pagal prekės pa­va­di­ni­mą, ka­te­go­ri­ją arba kainą
  • Sandorių rū­šia­vi­mas pagal sumą, datą arba pa­va­di­ni­mą
  • Užsakymų rū­šia­vi­mas pagal sumą arba įver­ti­ni­mus
  • Dar­buo­to­jų rū­šia­vi­mas pagal at­ly­gi­ni­mą, sutartis, darbo re­zul­ta­tus arba skyrių
  • Atsargų sąrašo sudarymas pagal kiekį arba pa­va­di­ni­mą
  • Siuntų rū­šia­vi­mas pagal pašto kodą arba sekimo numerį
  • Klientų sąrašų rū­šia­vi­mas pagal regioną arba amžių

SQL ORDER BY pa­vyz­džiai

Dabar pereisime prie 3 pavyzdžių, kuriuose nau­do­ja­mas skaičius ORDER BY.

Prekių rū­šia­vi­mas pagal kainą

Šiame pavyzdyje su­rū­šiuo­si­me „Plaukai“ ka­te­go­ri­jos prekes di­dė­jan­čia tvarka pagal kainą. FROM ir WHERE nurodome, kurias prekes norime su­rū­šiuo­ti. Skaičiais ORDER BY ir ASC nurodome, kad norime jas su­rū­šiuo­ti di­dė­jan­čia tvarka pagal kainą. Sintaksė atrodo taip:

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

Klientų fil­t­ra­vi­mas

Tarkime, dirbate su lentele „Klientai“ ir norite su­rū­šiuo­ti visus klientus iš Jungtinės Ka­ra­lys­tės pagal jų vardus. Norite juos su­rū­šiuo­ti at­virkš­ti­ne 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;
sql

Rū­šia­vi­mas pagal kelias ka­te­go­ri­jas

Šiame pavyzdyje norite su­rū­šiuo­ti „Elekt­ro­ni­ka“ ka­te­go­ri­jos prekes pagal užsakymo kiekį. Jei užsakymų kiekiai yra vienodi, norite juos su­rū­šiuo­ti pagal šalį, iš kurios buvo pateiktas užsakymas.

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

Ar yra SQL ORDER BY al­ter­na­ty­vų?

SQL kalboje nėra al­ter­na­ty­vų, 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 su­gru­puo­ti pagal ka­te­go­ri­jas, o ORDER BY gali pa­pil­do­mai tuos įrašus su­rū­šiuo­ti.

Pavyzdys: tarkime, norite su­gru­puo­ti klientų užsakymų kiekius pagal šalį, o tada naudodami ag­re­ga­vi­mo funkciją AVG su­rū­šiuo­ti 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;
sql

Taip pat galite naudoti HAVING sąlygą, kad su­rū­šiuo­tus įrašus fil­t­ruo­tu­mė­te pagal paieškos kri­te­ri­jus ir sąlygas. LIMIT gali būti nau­do­ja­mas rezultatų rinkiniui apriboti iki tam tikro skaičiaus.

Go to Main Menu