# SQL-komennon ORDER BY käyttö

SQL: `ORDER BY` voit lajitella hakutulokset omien tarpeidesi mukaan joko nousevassa tai laskevassa järjestyksessä. Kohdetabelin tietojen lajittelu riveiksi ja sarakkeiksi voi tehdä tuloksista selkeämpiä ja helpommin luettavia. Tämä puolestaan optimoi ja nopeuttaa tietojen analysointia ja kyselyjä monimutkaisissa tietokokonaisuuksissa.

## Mikä on SQL `ORDER BY`?

SQL `ORDER BY` avulla voit lajitella tietoja ja tuloksia sekä yksinkertaisista että monimutkaisista tietojoukoista. Komennon avulla voit määrittää, **miten tiedot järjestetään** kohdetabelissa. Lisäksi voit määrittää, lajitellaanko tiedot nousevassa vai laskevassa järjestyksessä. `ORDER BY` saat selkeitä ja helppolukuisia kyselytuloksia.

Oletusarvoisesti `ORDER BY` palauttaa tulokset nousevassa järjestyksessä, eli A–Z tai pienimmästä suurimpaan arvoon. Jos haluat tulokset laskevassa järjestyksessä, voit käyttää valinnaista avainsanaa `DESC`. Voit määrittää tuloksille yhden tai useamman kohdesarakkeen.

SQL `ORDER BY` on tärkeä **järjestelmällisten ja nopeiden kyselyjen** suorittamisessa. Sitä käytetään usein yhdessä SELECT-, WHERE- ja muiden SQL-operaattoreiden sekä GROUP BY:n kaltaisten funktioiden kanssa.

Vinkki Haluatko oppia ymmärtämään [SQL:](https://www.ionos.com/fi-fi/digitalguide/palvelin/osaaminen/mikae-on-sql/) ää paremmin, mutta et tiedä mistä aloittaa? [Esimerkkejä sisältävä SQL-johdantomme](https://www.ionos.com/fi-fi/digitalguide/palvelin/asetukset/sqln-esittely-esimerkkien-kera/) helpottaa tämän suositun tietokantakielen oppimisen aloittamista.

## Mikä on SQL `ORDER BY`:n syntaksi?

SQL `ORDER BY`:n syntaksi on seuraava:

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

Huomio Jos syötät vain yhden sarakkeen numeron `ORDER BY` jälkeen, saat **yhden sarakkeen, jossa tulokset on lajiteltu**. Jos syötät useamman kuin yhden sarakkeen, tulokset lajitellaan sarakkeen A perusteella. Jos sarakkeessa A on joissakin riveissä identtisiä merkintöjä, kyseiset rivit lajitellaan sarakkeen B perusteella.

Voit laajentaa tätä syntaksia lisäämällä siihen uusia operaattoreita ja parametreja. Esimerkiksi lauseketta `WHERE` voidaan käyttää määrittelemään kriteerejä, jotka rajaavat hakutuloksia. Syntaksi, jossa yhdistyvät `ORDER BY` ja `WHERE`, näyttää tältä:

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

Voit käyttää myös seuraavia parametreja:

- `SELECT`: SELECT-lauseella voit määrittää, mitä tietoja haluat analysoida. Käytä tähteä `*`, jos haluat hakea koko tietojoukon, tai kirjoita sarakkeiden nimet, jos haluat käsitellä vain niitä sarakkeita.
- `FROM`: Määrittää, mistä taulukosta haluat hakea tietoja.
- `WHERE`: WHERE on valinnainen lause, jolla määritellään hakuehdot, jotka rajaavat tuloksia. `WHERE` lauseessa voit käyttää operaattoreita, kuten `=`, LIKE tai [NOT](https://www.ionos.com/fi-fi/digitalguide/palvelin/asetukset/sql-not/).
- `ORDER BY`: Määrittää, minkä sarakkeen perusteella haluat lajitella tulokset. Jos et lisää `ASC` tai `DESC`, tulokset lajitellaan oletuksena nousevassa järjestyksessä.

Huomio Tietokannasta riippuen `ORDER BY` lajittelee NULL-arvot joko automaattisesti tai valitun lajittelujärjestyksen mukaisesti. SQLite-, MySQL- ja SQL Server -tietokannoissa NULL-arvot käsitellään pienimpinä arvoina. Tämä tarkoittaa, että ne näkyvät nousevassa tuloksissa ensimmäisinä. Oracle- ja PostgreSQL-tietokannoissa NULL-arvot käsitellään suurimpina arvoina. Siksi ne näkyvät nousevassa tuloksissa viimeisinä.

## Mihin SQL `ORDER BY` voidaan käyttää?

Tässä on muutamia käytännön esimerkkejä SQL `ORDER BY`n käytöstä:

- Tuotetietojen lajittelu tuotenimen, luokan tai hinnan perusteella
- Tapahtumien lajittelu summan, päivämäärän tai nimen perusteella
- Tilauksien lajittelu summan tai arvioiden perusteella
- Työntekijöiden lajittelu palkan, sopimusten, suorituskyvyn tai osaston mukaan
- Varastotilanteen luettelointi määrän tai nimen perusteella
- Lähetysten lajittelu postinumeron tai seurantanumeron perusteella
- Asiakasluetteloiden lajittelu alueen tai iän mukaan

## Esimerkkejä SQL `ORDER BY`:stä

Siirrymme nyt kolmeen esimerkkiin, joissa käytetään `ORDER BY`.

### Tuotteiden lajittelu hinnan mukaan

Tässä esimerkissä lajittelemme ”Hair”-luokan tuotteet nousevassa järjestyksessä hinnan mukaan. Määritämme numeroilla `FROM` ja `WHERE`, mitkä tuotteet haluamme lajitella. Numeroilla `ORDER BY` ja `ASC` määritämme, että haluamme lajitella ne nousevassa järjestyksessä hinnan mukaan. Syntaksi on seuraava:

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

### Asiakkaiden suodattaminen

Oletetaan, että työskentelet taulukossa nimeltä ”Asiakkaat” ja haluat lajitella kaikki Isosta-Britanniasta kotoisin olevat asiakkaat nimen mukaan. Haluat lajitella heidät käänteisessä aakkosjärjestyksessä Z:sta A:han, joten lisäät komentoon `ORDER BY` `DESC`.

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

### Lajittelu useiden luokkien perusteella

Tässä esimerkissä haluat lajitella ”Elektroniikka”-luokan tuotteet tilausmäärän mukaan. Jos tilausmäärät ovat samat, haluat lajitella tuotteet sen mukaan, mistä maasta tilaus on peräisin.

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

## Onko SQL `ORDER BY`:lle vaihtoehtoja?

SQL:ssä ei ole `ORDER BY` vaihtoehtoja, joilla olisi sama toiminto. GROUP BY on kuitenkin SQL-komento, jota käytetään usein yhdessä `ORDER BY` kanssa. `GROUP BY` voidaan käyttää **tietueiden ryhmittelemiseen luokkien perusteella**, ja `ORDER BY` voidaan lisäksi lajitella kyseiset tietueet.

**Esimerkki**: Oletetaan, että haluat ryhmitellä asiakkaiden tilausmäärät maittain ja lajitella ne sitten keskimääräisen tilausmäärän mukaan käyttämällä AVG-yhteenlaskutoimintoa. Syntaksi olisi seuraava:

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

Voit myös käyttää HAVING-lauseketta suodattaaksesi lajitellut tietueet hakuehtojen ja -olosuhteiden perusteella. `LIMIT` voidaan käyttää tulosjoukon rajoittamiseen tiettyyn määrään.


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