# 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.

Tip Norite geriau suprasti [SQL](https://www.ionos.com/lt-lt/digitalguide/serveris/zinios/kas-yra-sql/), bet nežinote, nuo ko pradėti? Mūsų [SQL įvadas su pavyzdžiais](https://www.ionos.com/lt-lt/digitalguide/serveris/konfiguracija/ivadas-i-sql-su-pavyzdziais/) padės lengvai pradėti mokytis šios populiarios duomenų bazių kalbos.

## Kokia yra SQL `ORDER BY` sintaksė?

SQL `ORDER BY` sintaksė atrodo taip:

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

Note Jei 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:

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

Taip 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. `WHERE` sąlygoje galite naudoti operatorius, pvz., `=`, LIKE arba [NOT](https://www.ionos.com/lt-lt/digitalguide/serveris/konfiguracija/sql-not/).
- `ORDER BY`: Nurodo, pagal kurią stulpelį norite rūšiuoti rezultatus. Jei nepridėsite `ASC` arba `DESC`, rezultatai pagal numatytuosius nustatymus bus rūšiuojami didėjančia tvarka.

Note 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:

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

### Klientų 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`.

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

### Rūš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.

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

## Ar 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:

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

Taip 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.


This is a markdown version of: [https://www.ionos.com/lt-lt/digitalguide/serveris/konfiguracija/sql-order-by/](https://www.ionos.com/lt-lt/digitalguide/serveris/konfiguracija/sql-order-by/) for AI/LLM consumption.