Hoe SQL ORDER BY te gebruiken
Met ORDER BY commando van SQL kunt u zoekresultaten sorteren op basis van uw individuele behoeften, in oplopende of aflopende volgorde. Door de gegevens in uw doeltabel te sorteren in rijen en kolommen, worden uw resultaten duidelijker en beter leesbaar. Dat optimaliseert en versnelt op zijn beurt uw gegevensanalyses en query’s in complexe gegevenssets.
Wat is SQL ORDER BY?
U kunt SQL ORDER BY gebruiken om gegevens en resultaten uit eenvoudige of complexe datasets te sorteren. Met deze opdracht kunt u bepalen hoe gegevens in de doeltabel worden gerangschikt. Bovendien kunt u aangeven of gegevens in oplopende of aflopende volgorde moeten worden gesorteerd. Zo helpt ORDER BY om queryresultaten te leveren die duidelijk en gemakkelijk te lezen zijn.
Standaard levert ORDER BY resultaten in oplopende volgorde, dat wil zeggen van A tot Z of van de kleinste naar de grootste waarde. Als u de voorkeur geeft aan resultaten in aflopende volgorde, kunt u het optionele trefwoord DESC gebruiken. U kunt één of meerdere doelkolommen voor de resultaten definiëren.
SQL ORDER BY is belangrijk voor het uitvoeren van georganiseerde, snelle query’s. Het wordt vaak gebruikt met SELECT, WHERE en andere SQL-operatoren en -functies zoals GROUP BY.
Wilt u SQL beter begrijpen, maar weet u niet waar u moet beginnen? Onze inleiding tot SQL met voorbeelden maakt het gemakkelijk om deze populaire databasetaal te leren.
Wat is de syntaxis van SQL ORDER BY?
De syntaxis van SQL ORDER BY ziet er als volgt uit:
SELECT ColumnA, ColumnB, … or *
FROM Table
ORDER BY ColumnA, ColumnB, … (optional: ASC or DESC)sqlAls u slechts één kolom invoert na ORDER BY, krijgt u één kolom met gesorteerde resultaten. Als u meer dan één kolom invoert, worden de resultaten gesorteerd op basis van kolom A. Als kolom A in sommige rijen identieke vermeldingen bevat, worden die rijen gesorteerd op basis van kolom B.
U kunt deze syntaxis uitbreiden met verdere operatoren en parameters. Een WHERE kan bijvoorbeeld worden gebruikt om criteria te definiëren die uw zoekresultaten verfijnen. De syntaxis van ORDER BY in combinatie met WHERE ziet er als volgt uit:
SELECT ColumnA, ColumnB, … or *
FROM Table
WHERE ColumnA = 'SearchCondition'
ORDER BY ColumnA, ColumnB, … (optional: ASC or DESC)sqlU kunt ook de volgende parameters gebruiken:
SELECT: U kunt SELECT gebruiken om aan te geven welke gegevens u wilt analyseren. Gebruik een asterisk*om de volledige dataset op te vragen of voer de namen van kolommen in om met die kolommen te werken.FROM: Geeft aan uit welke tabel u gegevens wilt opvragen.WHERE: WHERE is een optionele clausule voor het definiëren van zoekcriteria die uw resultaten verfijnen. Binnen eenWHEREkunt u operatoren zoals=, LIKE of NOT gebruiken.ORDER BY: Bepaalt op basis van welke kolom u uw resultaten wilt sorteren. Als uASCofDESCniet toevoegt, worden de resultaten standaard in oplopende volgorde gesorteerd.
Afhankelijk van de database sorteert ORDER BY NULL-waarden automatisch of op basis van de geselecteerde sorteervolgorde. In SQLite, MySQL en SQL Server worden NULL-waarden behandeld als de laagste waarden. Dat betekent dat ze aan het begin van oplopende resultaten verschijnen. In Oracle en PostgreSQL worden NULL-waarden behandeld als de hoogste waarden. Ze verschijnen dus aan het einde van oplopende resultaten.
Waarvoor kan SQL ORDER BY worden gebruikt?
Hier zijn enkele praktische gebruiksscenario’s voor SQL ORDER BY:
- Productinformatie sorteren op productnaam, categorie of prijs
- Transacties sorteren op basis van bedrag, datum of naam
- Bestellingen sorteren op basis van bedrag of beoordelingen
- Sorteren van werknemers op basis van salaris, contracten, prestaties of afdeling
- Voorraad weergeven op basis van hoeveelheid of naam
- Verzendingen sorteren op postcode of trackingnummer
- Klantenlijsten sorteren op regio of leeftijd
Voorbeelden van SQL ORDER BY
We gaan nu kijken naar 3 voorbeelden met ORDER BY.
Producten sorteren op prijs
In dit voorbeeld sorteren we producten uit de categorie ‘Haar’ in oplopende volgorde op basis van prijs. We gebruiken FROM en WHERE om aan te geven welke items we willen sorteren. Met ORDER BY en ASC geven we aan dat we ze in oplopende volgorde op basis van prijs willen sorteren. De syntaxis ziet er als volgt uit:
SELECT *
FROM Products
WHERE Category = 'Hair'
ORDER BY Price ASC;sqlKlanten filteren
Stel dat u werkt in een tabel met de naam ‘Klanten’ en dat u alle klanten uit het Verenigd Koninkrijk op naam wilt sorteren. U wilt ze in omgekeerde alfabetische volgorde sorteren, van Z naar A, dus voegt u DESC toe aan het commando ORDER BY.
SELECT *
FROM Customers
WHERE Country = 'UK'
ORDER BY Name DESC;sqlSorteren op basis van meerdere categorieën
In dit voorbeeld wilt u producten uit de categorie ‘Elektronica’ sorteren op basis van de bestelhoeveelheid. Als de bestelhoeveelheden identiek zijn, wilt u ze sorteren op basis van het land waar de bestelling vandaan komt.
SELECT *
FROM Products
WHERE Category = 'Electronics'
ORDER BY OrderQuantity ASC, Country DESC;sqlZijn er alternatieven voor SQL ORDER BY?
Er zijn geen alternatieven voor ORDER BY in SQL met dezelfde functie. GROUP BY is echter een SQL-opdracht die vaak in combinatie met ORDER BY wordt gebruikt. GROUP BY kan worden gebruikt om records op basis van categorieën te groeperen en ORDER BY kan die records bovendien sorteren.
Een voorbeeld: stel dat u de bestelhoeveelheden van klanten wilt groeperen op basis van land en vervolgens de aggregatiefunctie AVG wilt gebruiken om te sorteren op basis van de gemiddelde bestelhoeveelheid. De syntaxis daarvoor zou er als volgt uitzien:
SELECT Country, AVG(OrderQuantity)
FROM Customers
WHERE Category = 'Electronics'
GROUP BY Country
ORDER BY AVG(OrderQuantity) ASC;sqlU kunt ook een HAVING-clausule gebruiken om de gesorteerde records te filteren op basis van zoekcriteria en voorwaarden. LIMIT kan worden gebruikt om de resultatenset te beperken tot een bepaald aantal.