Sådan bruges SQL ORDER BY
Med SQL-kommandoen ORDER BY kan du sortere søgeresultaterne efter dine egne behov, enten i stigende eller faldende rækkefølge. Ved at sortere dataene i din måltabel i rækker og kolonner kan du gøre resultaterne mere overskuelige og læselige. Det optimerer og fremskynder igen dine dataanalyser og forespørgsler i komplekse datasæt.
Hvad er SQL ORDER BY?
Du kan bruge SQL ORDER BY til at sortere data og resultater fra både enkle og komplekse datasæt. Kommandoen giver dig mulighed for at definere, hvordan dataene skal ranges i måltabellen. Derudover kan du angive, om dataene skal sorteres i stigende eller faldende rækkefølge. På den måde hjælper ORDER BY med at levere forespørgselsresultater, der er overskuelige og letlæselige.
Som standard viser ORDER BY resultaterne i stigende rækkefølge, dvs. fra A til Z eller fra den mindste til den største værdi. Hvis du foretrækker resultaterne i faldende rækkefølge, kan du bruge det valgfri nøgleord DESC. Du kan angive en eller flere målkolonner for resultaterne.
SQL ORDER BY er vigtigt for at kunne udføre velstrukturerede og hurtige forespørgsler. Det bruges ofte sammen med SELECT, WHERE og andre SQL-operatører og -funktioner som f.eks. GROUP BY.
Vil du gerne forstå SQL bedre, men ved ikke, hvor du skal begynde? Vores introduktion til SQL med eksempler gør det nemt at komme i gang med at lære dette populære databasesprog.
Hvordan ser syntaksen i SQL ORDER BY ud?
Syntaksen i SQL ORDER BY ser således ud:
SELECT ColumnA, ColumnB, … or *
FROM Table
ORDER BY ColumnA, ColumnB, … (optional: ASC or DESC)sqlHvis du kun angiver én kolonne efter ORDER BY, får du en kolonne med sorterede resultater. Hvis du angiver mere end én kolonne, sorteres resultaterne efter KolonneA. Hvis KolonneA indeholder identiske værdier i nogle rækker, sorteres disse rækker efter KolonneB.
Du kan udvide denne syntaks med yderligere operatorer og parametre. En WHERE kan for eksempel bruges til at definere kriterier, der indsnævrer dine søgeresultater. Syntaksen for ORDER BY kombineret med WHERE ser således ud:
SELECT ColumnA, ColumnB, … or *
FROM Table
WHERE ColumnA = 'SearchCondition'
ORDER BY ColumnA, ColumnB, … (optional: ASC or DESC)sqlDu kan også bruge følgende parametre:
SELECT: Du kan bruge SELECT til at angive, hvilke data du vil analysere. Brug en stjerne*for at hente hele datasættet, eller indtast kolonnenavne for at arbejde med de pågældende kolonner.FROM: Angiver, hvilken tabel du vil hente data fra.WHERE: WHERE er en valgfri klausul til at definere søgekriterier, der indsnævrer dine resultater. Inden for enWHEREkan du bruge operatorer som=, LIKE eller NOT.ORDER BY: Definerer, hvilken kolonne du vil sortere dine resultater efter. Hvis du ikke tilføjerASCellerDESC, vil resultaterne som standard blive sorteret i stigende rækkefølge.
Afhængigt af databasen sorteres NULL-værdier ORDER BY automatisk eller i henhold til den valgte sorteringsrækkefølge. I SQLite, MySQL og SQL Server behandles NULL-værdier som de laveste værdier. Det betyder, at de vises først i stigende rækkefølge. I Oracle og PostgreSQL behandles NULL-værdier som de højeste værdier. De vises derfor sidst i stigende rækkefølge.
Hvad kan SQL ORDER BY bruges til?
Her er nogle eksempler på, hvordan SQL ORDER BY kan bruges i praksis:
- Sortering af produktoplysninger efter produktnavn, kategori eller pris
- Sortering af transaktioner efter beløb, dato eller navn
- Sortering af ordrer efter beløb eller bedømmelser
- Sortering af medarbejdere efter løn, kontrakter, præstation eller afdeling
- Oversigt over lagerbeholdning baseret på mængde eller navn
- Sortering af forsendelser efter postnummer eller sporingsnummer
- Sortering af kundelister efter region eller alder
Eksempler på SQL ORDER BY
Vi vil nu se på tre eksempler, hvor ORDER BY indgår.
Sortering af produkter efter pris
I dette eksempel sorterer vi produkter fra kategorien »Hår« i stigende rækkefølge efter pris. Vi bruger FROM og WHERE til at angive, hvilke varer vi vil sortere. Med ORDER BY og ASC angiver vi, at vi vil sortere dem i stigende rækkefølge efter pris. Syntaksen ser således ud:
SELECT *
FROM Products
WHERE Category = 'Hair'
ORDER BY Price ASC;sqlFiltrering af kunder
Lad os sige, at du arbejder i en tabel ved navn »Kunder« og vil sortere alle kunder fra Storbritannien efter deres navn. Du vil sortere dem i omvendt alfabetisk rækkefølge fra Z til A, så du tilføjer DESC til kommandoen ORDER BY.
SELECT *
FROM Customers
WHERE Country = 'UK'
ORDER BY Name DESC;sqlSortering efter flere kategorier
I dette eksempel vil du sortere produkter fra kategorien »Elektronik« efter ordremængde. Hvis ordremængderne er ens, vil du sortere dem efter det land, ordren kommer fra.
SELECT *
FROM Products
WHERE Category = 'Electronics'
ORDER BY OrderQuantity ASC, Country DESC;sqlFindes der alternativer til SQL ORDER BY?
Der findes ingen alternativer til ORDER BY i SQL, der har samme funktion. GROUP BY er dog en SQL-kommando, der ofte bruges sammen med ORDER BY. GROUP BY kan bruges til at gruppere poster efter kategorier, og ORDER BY kan desuden sortere disse poster.
Et eksempel: Lad os sige, at du vil gruppere kundernes ordremængder efter land og derefter bruge aggregeringsfunktionen AVG til at sortere efter den gennemsnitlige ordremængde. Syntaksen for dette vil se således ud:
SELECT Country, AVG(OrderQuantity)
FROM Customers
WHERE Category = 'Electronics'
GROUP BY Country
ORDER BY AVG(OrderQuantity) ASC;sqlDu kan også bruge en HAVING- klausul til at filtrere de sorterede poster ud fra søgekriterier og betingelser. LIMIT kan bruges til at begrænse resultatsættet til et bestemt antal.