SQL komanda ORDER BY ļauj jums šķirot mek­lē­ša­nas re­zul­tā­tus at­bil­sto­ši savām in­di­vi­duā­la­jām va­ja­dzī­bām – gan augošā, gan dilstošā secībā. Datu šķirošana mērķa tabulā pēc rindām un kolonnām var padarīt re­zul­tā­tus skaid­rā­kus un vieglāk lasāmus. Tas savukārt optimizē un paātrina datu analīzi un vai­cā­ju­mus sa­rež­ģī­tos datu kopumos.

Kas ir SQL ORDER BY?

Iz­man­to­jot SQL ORDER BY, varat šķirot datus un re­zul­tā­tus no vien­kār­šām vai sa­rež­ģī­tām datu kopām. Šī komanda ļauj noteikt, kā dati tiks sakārtoti mērķa tabulā. Turklāt varat norādīt, vai dati tiks šķiroti augošā vai dilstošā secībā. Tādējādi ORDER BY palīdz no­dro­ši­nāt skaidrus un viegli lasāmus vaicājuma re­zul­tā­tus.

Pēc no­klu­sē­ju­ma ORDER BY rāda re­zul­tā­tus augošā secībā, proti, no A līdz Z vai no mazākās līdz lie­lā­ka­jai vērtībai. Ja vēlaties re­zul­tā­tus le­jupslī­do­šā secībā, varat izmantot papildu at­slēg­vār­du DESC. Re­zul­tā­tiem varat norādīt vienu vai vairākas mērķa kolonnas.

SQL ORDER BY ir svarīgs, lai veiktu struk­tu­rē­tus un ātrus vai­cā­ju­mus. To bieži izmanto kopā ar SELECT, WHERE un citiem SQL ope­ra­to­riem, kā arī funkcijām, piemēram, GROUP BY.

Tip

Vēlaties labāk izprast SQL, bet nezināt, ar ko sākt? Mūsu SQL ievads ar piemēriem atvieglo šīs populārās datubāzu valodas apguvi.

Kāda ir SQL ORDER BY sintakse?

SQL ORDER BY sintakse izskatās šādi:

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

Ja pēc ORDER BY ie­va­dī­siet tikai vienu kolonnu, rezultāti tiks sakārtoti pēc šīs kolonnas. Ja ie­va­dī­siet vairākas kolonnas, rezultāti tiks sakārtoti pēc A kolonnas. Ja A kolonā dažās rindās ir identiski ieraksti, šīs rindas tiks sa­kār­to­tas pēc B kolonnas.

Šo sintaksi var pa­pla­ši­nāt, pie­vie­no­jot papildu ope­ra­to­rus un pa­ra­met­rus. Piemēram, WHERE klauzulu var izmantot, lai definētu kri­tē­ri­jus, kas sašaurina vaicājuma re­zul­tā­tus. ORDER BY un WHERE sintakse kopā izskatās šādi:

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

Jūs varat izmantot arī šādus pa­ra­met­rus:

  • SELECT: Ar komandu SELECT varat norādīt, kurus datus vēlaties analizēt. Lai izgūtu visus datus, iz­man­to­jiet zvaigznī­ti *, vai arī ievadiet kolonnu no­sau­ku­mus, lai strādātu ar šīm kolonām.
  • FROM: Norāda, no kuras tabulas vēlaties izgūt datus.
  • WHERE: WHERE ir fa­kul­ta­tī­va klauzula, kas ļauj definēt mek­lē­ša­nas kri­tē­ri­jus, kuri sa­šau­ri­nās re­zul­tā­tus. WHERE klauzulā varat izmantot ope­ra­to­rus, piemēram, =, LIKE vai NOT.
  • ORDER BY: Nosaka, pēc kuras kolonnas vēlaties šķirot re­zul­tā­tus. Ja ne­pie­vie­no­jat ASC vai DESC, rezultāti pēc no­klu­sē­ju­ma tiks šķiroti augošā secībā.
Note

Atkarībā no datu bāzes NULL vērtības ORDER BY šķirotas au­to­mā­tis­ki vai at­bil­sto­ši iz­vē­lē­ta­jai šķi­ro­ša­nas secībai. SQLite, MySQL un SQL Server datu bāzēs NULL vērtības tiek uz­ska­tī­tas par mazākajām vērtībām. Tas nozīmē, ka tās parādās augošā secībā sakārtoto rezultātu sākumā. Oracle un PostgreSQL datu bāzēs NULL vērtības tiek uz­ska­tī­tas par lie­lā­ka­jām vērtībām. Tādējādi tās parādās augošā secībā sakārtoto rezultātu beigās.

Kādiem mērķiem var izmantot SQL ORDER BY?

Šeit ir daži praktiski SQL ORDER BY lie­to­ša­nas piemēri:

  • Preču in­for­mā­ci­jas šķirošana pēc preces nosaukuma, ka­te­go­ri­jas vai cenas
  • Darījumu šķirošana pēc summas, datuma vai nosaukuma
  • Pa­sū­tī­ju­mu šķirošana pēc summas vai no­vēr­tē­ju­miem
  • Dar­bi­nie­ku šķirošana pēc algas, līgumiem, darba re­zul­tā­tiem vai nodaļas
  • Krājumu saraksta izveide pēc summas vai nosaukuma
  • Sūtījumu šķirošana pēc pasta indeksa vai iz­se­ko­ša­nas numura
  • Klientu sarakstu šķirošana pēc reģiona vai vecuma

SQL ORDER BY piemēri

Tagad pie­vēr­sī­si­mies trim piemēriem, kuros izmantots ORDER BY.

Preču šķirošana pēc cenas

Šajā piemērā mēs sa­kār­to­sim preces no ka­te­go­ri­jas „Mati” augošā secībā pēc cenas. Ar FROM un WHERE norādām, kuras preces vēlamies sakārtot. Ar ORDER BY un ASC norādām, ka vēlamies tās sakārtot augošā secībā pēc cenas. Sintakse izskatās šādi:

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

Klientu fil­trē­ša­na

Pieņemsim, ka jūs strādājat ar tabulu „Klienti” un vēlaties sakārtot visus klientus no Ap­vie­no­tās Ka­ra­lis­tes pēc viņu vārdiem. Jūs vēlaties tos sakārtot apgrieztā alfabēta secībā no Z līdz A, tāpēc komandai ORDER BY pie­vie­no­jat DESC.

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

Šķirošana pēc vairākām ka­te­go­ri­jām

Šajā piemērā jūs vēlaties sakārtot produktus no ka­te­go­ri­jas „Elek­tro­ni­ka” pēc pa­sū­tī­ju­ma daudzuma. Ja pa­sū­tī­ju­ma daudzumi ir vienādi, jūs vēlaties tos sakārtot pēc valsts, no kuras pa­sū­tī­jums ir saņemts.

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

Vai ir kādas al­ter­na­tī­vas SQL ORDER BY?

SQL valodā nav al­ter­na­tī­vu ORDER BY funkcijai ar tādu pašu darbību. Tomēr GROUP BY ir SQL komanda, ko bieži izmanto kopā ar ORDER BY. GROUP BY var izmantot, lai grupētu ierakstus pēc ka­te­go­ri­jām, bet ORDER BY var šos ierakstus papildus kārtot.

Piemērs: pieņemsim, ka vēlaties sagrupēt klientu pa­sū­tī­ju­mu apjomus pēc valstīm un pēc tam izmantot sum­mē­ša­nas funkciju AVG, lai šķirotu pēc vidējā pa­sū­tī­ju­ma apjoma. Sintakse šim gadījumam iz­ska­tī­tos šādi:

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

Varat izmantot arī HAVING klauzulu, lai filtrētu sa­kār­to­tos ierakstus at­bil­sto­ši mek­lē­ša­nas kri­tē­ri­jiem un no­sa­cī­ju­miem. LIMIT var ierobežot rezultātu kopu līdz noteiktam skaitam.

Go to Main Menu