Hvordan bruke SQL ORDER BY
Med SQL-kommandoen ORDER BY kan du sortere søkeresultatene etter dine egne behov, enten i stigende eller synkende rekkefølge. Ved å sortere dataene i måltabellen din etter rader og kolonner kan du gjøre resultatene tydeligere og lettere å lese. Dette bidrar igjen til å optimalisere og fremskynde dataanalyser og spørringer i komplekse datasett.
Hva er SQL ORDER BY?
Du kan bruke SQL ORDER BY til å sortere data og resultater fra enkle eller komplekse datasett. Kommandoen lar deg definere hvordan dataene skal ordnes i måltabellen. I tillegg kan du angi om dataene skal sorteres i stigende eller synkende rekkefølge. Dermed bidrar ORDER BY til å levere søkeresultater som er oversiktlige og lette å lese.
Som standard viser ORDER BY resultatene i stigende rekkefølge, det vil si fra A til Å eller fra laveste til høyeste verdi. Hvis du foretrekker resultater i synkende rekkefølge, kan du bruke det valgfrie nøkkelordet DESC. Du kan angi én eller flere målkolonner for resultatene.
SQL ORDER BY er viktig for å utføre strukturerte og raske spørringer. Det brukes ofte sammen med SELECT, WHERE og andre SQL-operatører og -funksjoner som GROUP BY.
Vil du få en bedre forståelse av SQL, men vet ikke hvor du skal begynne? Vår innføring i SQL med eksempler gjør det enkelt å komme i gang med å lære dette populære databasespråket.
Hva er syntaksen i SQL ORDER BY?
Syntaksen i SQL ORDER BY ser slik ut:
SELECT ColumnA, ColumnB, … or *
FROM Table
ORDER BY ColumnA, ColumnB, … (optional: ASC or DESC)sqlHvis du bare angir én kolonne etter ORDER BY, får du én kolonne med sorterte resultater. Hvis du angir flere enn én kolonne, blir resultatene sortert etter KolonneA. Hvis KolonneA har identiske oppføringer i enkelte rader, blir disse radene sortert etter KolonneB.
Du kan utvide denne syntaksen med flere operatorer og parametere. En WHERE kan for eksempel brukes til å definere kriterier som avgrenser søkeresultatene dine. Syntaksen for ORDER BY kombinert med WHERE ser slik ut:
SELECT ColumnA, ColumnB, … or *
FROM Table
WHERE ColumnA = 'SearchCondition'
ORDER BY ColumnA, ColumnB, … (optional: ASC or DESC)sqlDu kan også bruke følgende parametere:
SELECT: Du kan bruke SELECT til å angi hvilke data du vil analysere. Bruk en stjerne*for å hente hele datasettet, eller skriv inn kolonnenavnene for å arbeide med de aktuelle kolonnene.FROM: Angir hvilken tabell du vil hente data fra.WHERE: WHERE er en valgfri klausul for å definere søkekriterier som vil begrense resultatene dine. Innenfor enWHEREkan du bruke operatorer som=, LIKE eller NOT.ORDER BY: Definerer hvilken kolonne du vil sortere resultatene dine etter. Hvis du ikke legger tilASCellerDESC, vil resultatene som standard bli sortert i stigende rekkefølge.
Avhengig av hvilken database ORDER BY, sorteres NULL-verdier ORDER BY automatisk eller i henhold til den valgte sorteringsrekkefølgen. I SQLite, MySQL og SQL Server behandles NULL-verdier som de laveste verdiene. Det betyr at de vises først i stigende rekkefølge. I Oracle og PostgreSQL behandles NULL-verdier som de høyeste verdiene. De vises derfor sist i stigende rekkefølge.
Hva kan SQL ORDER BY brukes til?
Her er noen praktiske bruksområder for SQL ORDER BY:
- Sortering av produktinformasjon etter produktnavn, kategori eller pris
- Sortering av transaksjoner etter beløp, dato eller navn
- Sortering av ordrer etter beløp eller rangering
- Sortering av ansatte etter lønn, kontrakter, ytelse eller avdeling
- Liste over lagerbeholdning basert på mengde eller navn
- Sortering av forsendelser basert på postnummer eller sporingsnummer
- Sortering av kundelister etter region eller alder
Eksempler på SQL ORDER BY
Nå skal vi se på tre eksempler der vi bruker ORDER BY.
Sortering av produkter etter pris
I dette eksemplet skal vi sortere produkter fra kategorien «Hår» i stigende rekkefølge etter pris. Vi bruker FROM og WHERE for å angi hvilke varer vi ønsker å sortere. Med ORDER BY og ASC angir vi at vi ønsker å sortere dem i stigende rekkefølge etter pris. Syntaksen ser slik ut:
SELECT *
FROM Products
WHERE Category = 'Hair'
ORDER BY Price ASC;sqlFiltrering av kunder
La oss si at du jobber i en tabell som heter «Kunder» og ønsker å sortere alle kunder fra Storbritannia etter navn. Du vil sortere dem i omvendt alfabetisk rekkefølge, fra Z til A, så du legger til DESC i kommandoen ORDER BY.
SELECT *
FROM Customers
WHERE Country = 'UK'
ORDER BY Name DESC;sqlSortering etter flere kategorier
I dette eksemplet ønsker du å sortere produkter fra kategorien «Elektronikk» etter bestillingsmengde. Hvis bestillingsmengdene er identiske, ønsker du å sortere dem etter hvilket land bestillingen kommer fra.
SELECT *
FROM Products
WHERE Category = 'Electronics'
ORDER BY OrderQuantity ASC, Country DESC;sqlFinnes det alternativer til SQL ORDER BY?
Det finnes ingen alternativer til ORDER BY i SQL som har samme funksjon. GROUP BY er imidlertid en SQL-kommando som ofte brukes sammen med ORDER BY. GROUP BY kan brukes til å gruppere poster etter kategorier, og ORDER BY kan i tillegg sortere disse postene.
Et eksempel: La oss si at du ønsker å gruppere kundenes bestillingsmengder etter land og deretter bruke aggregeringsfunksjonen AVG til å sortere etter gjennomsnittlig bestillingsmengde. Syntaksen for dette vil se slik ut:
SELECT Country, AVG(OrderQuantity)
FROM Customers
WHERE Category = 'Electronics'
GROUP BY Country
ORDER BY AVG(OrderQuantity) ASC;sqlDu kan også bruke en HAVING-klausul til å filtrere de sorterte postene ut fra søkekriterier og betingelser. LIMIT kan brukes til å begrense resultatsettet til et bestemt antall.