Kako uporabljati SQL ORDER BY
Z ukazom SQL ORDER BY lahko rezultate iskanja razvrstite glede na svoje potrebe, in sicer v naraščajočem ali padajočem vrstnem redu. Razvrstitev podatkov v ciljni tabeli po vrsticah in stolpcih lahko naredi rezultate preglednejše in lažje berljive. To pa posledično optimizira in pospeši analizo podatkov ter poizvedbe v zapletenih podatkovnih nizih.
Kaj je SQL ORDER BY?
Z uporabo SQL ORDER BY lahko razvrstite podatke in rezultate iz preprostih ali zapletenih podatkovnih nizov. Ta ukaz vam omogoča, da določite, kako se podatki razvrstijo v ciljni tabeli. Poleg tega lahko določite, ali naj se podatki razvrstijo v naraščajočem ali padajočem vrstnem redu. Tako vam ORDER BY pomaga zagotoviti jasne in pregledne rezultate poizvedb.
Privzeto ORDER BY prikaže rezultate v naraščajočem vrstnem redu, torej od A do Z ali od najmanjše do največje vrednosti. Če želite rezultate v padajočem vrstnem redu, lahko uporabite izbirno ključno besedo DESC. Za rezultate lahko določite enega ali več ciljnih stolpcev.
SQL ORDER BY je pomemben za izvajanje strukturiranih in hitrih poizvedb. Pogosto se uporablja skupaj s ključnimi besedami SELECT, WHERE in drugimi SQL-operaterji ter funkcijami, kot je GROUP BY.
Želite bolje razumeti jezik SQL, vendar ne veste, kje začeti? Naš uvod v jezik SQL s primeri vam olajša začetek učenja tega priljubljenega jezika za upravljanje podatkovnih baz.
Kakšna je sintaksa jezika SQL ORDER BY?
Sintaksa jezika SQL ORDER BY je naslednja:
SELECT ColumnA, ColumnB, … or *
FROM Table
ORDER BY ColumnA, ColumnB, … (optional: ASC or DESC)sqlČe vnesete le en stolpec po ORDER BY, boste dobili en stolpec z razvrščenimi rezultati. Če vnesete več kot en stolpec, bodo rezultati razvrščeni na podlagi stolpca A. Če stolpec A v nekaterih vrsticah vsebuje enake vrednosti, bodo te vrstice razvrščene na podlagi stolpca B.
To sintakso lahko razširite z dodatnimi operatorji in parametri. Klavzulo WHERE lahko na primer uporabite za opredelitev meril, ki zožijo rezultate poizvedbe. Sintaksa ORDER BY v kombinaciji s WHERE je naslednja:
SELECT ColumnA, ColumnB, … or *
FROM Table
WHERE ColumnA = 'SearchCondition'
ORDER BY ColumnA, ColumnB, … (optional: ASC or DESC)sqlUporabite lahko tudi naslednje parametre:
SELECT: Z ukazom SELECT lahko določite, katere podatke želite analizirati. Z zvezdico*lahko poizvedujete celoten niz podatkov, ali pa vnesete imena stolpcev, da delate s temi stolpci.FROM: Določa, iz katere tabele želite poiskati podatke.WHERE: WHERE je neobvezna klavzula za opredelitev iskalnih meril, ki bodo zožila vaše rezultate. V klavzuliWHERElahko uporabite operaterje, kot so=, LIKE ali NOT.ORDER BY: Določa, po katerem stolpcu želite razvrstiti rezultate. Če ne dodateASCaliDESC, bodo rezultati privzeto razvrščeni v naraščajočem vrstnem redu.
Glede na bazo podatkov ORDER BY vrednosti NULL razvrstijo samodejno ali v skladu z izbranim vrstnim redom. V SQLite, MySQL in SQL Serverju se vrednosti NULL obravnavajo kot najnižje vrednosti. To pomeni, da se v naraščajočem vrstnem redu rezultatov pojavijo na začetku. V Oracle in PostgreSQL se vrednosti NULL obravnavajo kot najvišje vrednosti. Zato se v naraščajočem vrstnem redu rezultatov pojavijo na koncu.
Za kaj se lahko uporablja SQL ORDER BY?
Tukaj je nekaj primerov praktične uporabe SQL ORDER BY:
- Razvrščanje podatkov o izdelkih po imenu izdelka, kategoriji ali ceni
- Razvrščanje transakcij po znesku, datumu ali imenu
- Razvrščanje naročil po znesku ali ocenah
- Razvrščanje zaposlenih po plači, pogodbah, uspešnosti ali oddelku
- Seznam zaloge po znesku ali imenu
- Razvrščanje pošiljk po poštni številki ali številki za sledenje
- Razvrščanje seznamov strank po regiji ali starosti
Primeri SQL ORDER BY
Sedaj si bomo ogledali 3 primere z uporabo ORDER BY.
Razvrščanje izdelkov po ceni
V tem primeru bomo izdelke iz kategorije »Lasje« razvrstili po naraščajočem vrstnem redu glede na ceno. S FROM in WHERE določimo, katere izdelke želimo razvrstiti. S ORDER BY in ASC pa določimo, da jih želimo razvrstiti po naraščajočem vrstnem redu glede na ceno. Sintaksa je naslednja:
SELECT *
FROM Products
WHERE Category = 'Hair'
ORDER BY Price ASC;sqlFiltriranje strank
Recimo, da delate v tabeli z imenom »Stranke« in želite vse stranke iz Velike Britanije razvrstiti po imenih. Želite jih razvrstiti v obratnem abecednem vrstnem redu, od Z do A, zato k ukazu ORDER BY dodate DESC.
SELECT *
FROM Customers
WHERE Country = 'UK'
ORDER BY Name DESC;sqlRazvrščanje po več kategorijah
V tem primeru želite izdelke iz kategorije »Elektronika« razvrstiti glede na količino naročila. Če je količina naročila enaka, jih želite razvrstiti glede na državo, iz katere prihaja naročilo.
SELECT *
FROM Products
WHERE Category = 'Electronics'
ORDER BY OrderQuantity ASC, Country DESC;sqlAli obstajajo alternative za SQL ORDER BY?
V jeziku SQL ni drugih ukazov z enako funkcijo kot ORDER BY. Vendar pa je GROUP BY ukaz v jeziku SQL, ki se pogosto uporablja v kombinaciji z ORDER BY. GROUP BY je mogoče zapise razvrstiti v skupine na podlagi kategorij, ORDER BY pa te zapise dodatno razvrsti.
Primer: Recimo, da želite količine naročil strank razvrstiti po državah in nato s pomočjo agregacijske funkcije AVG razvrstiti po povprečni količini naročila. Sintaksa za to bi bila naslednja:
SELECT Country, AVG(OrderQuantity)
FROM Customers
WHERE Category = 'Electronics'
GROUP BY Country
ORDER BY AVG(OrderQuantity) ASC;sqlPoleg tega lahko s klavzulo HAVING filtrirate razvrščene zapise na podlagi iskalnih meril in pogojev. LIMIT lahko omejite nabor rezultatov na določeno število.