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.
Haluatko oppia ymmärtämään SQL: ää paremmin, mutta et tiedä mistä aloittaa? Esimerkkejä sisältävä SQL-johdantomme helpottaa tämän suositun tietokantakielen oppimisen aloittamista.
Mikä on SQL ORDER BY:n syntaksi?
SQL ORDER BY:n syntaksi on seuraava:
SELECT ColumnA, ColumnB, … or *
FROM Table
ORDER BY ColumnA, ColumnB, … (optional: ASC or DESC)sqlJos 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ä:
SELECT ColumnA, ColumnB, … or *
FROM Table
WHERE ColumnA = 'SearchCondition'
ORDER BY ColumnA, ColumnB, … (optional: ASC or DESC)sqlVoit 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.WHERElauseessa voit käyttää operaattoreita, kuten=, LIKE tai NOT.ORDER BY: Määrittää, minkä sarakkeen perusteella haluat lajitella tulokset. Jos et lisääASCtaiDESC, tulokset lajitellaan oletuksena nousevassa järjestyksessä.
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 BYn 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:
SELECT *
FROM Products
WHERE Category = 'Hair'
ORDER BY Price ASC;sqlAsiakkaiden 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.
SELECT *
FROM Customers
WHERE Country = 'UK'
ORDER BY Name DESC;sqlLajittelu 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.
SELECT *
FROM Products
WHERE Category = 'Electronics'
ORDER BY OrderQuantity ASC, Country DESC;sqlOnko 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:
SELECT Country, AVG(OrderQuantity)
FROM Customers
WHERE Category = 'Electronics'
GROUP BY Country
ORDER BY AVG(OrderQuantity) ASC;sqlVoit myös käyttää HAVING-lauseketta suodattaaksesi lajitellut tietueet hakuehtojen ja -olosuhteiden perusteella. LIMIT voidaan käyttää tulosjoukon rajoittamiseen tiettyyn määrään.