SQL ORDER BY: output sorteren [TUTORIAL]
Wie gegevens opvraagt uit relationele databases met SQL zal vaak de behoefte hebben om de output op een bepaalde manier te ordenen. Als je veel data opvraagt met een SQL query dan kan de output namelijk onoverzichtelijk worden en daarmee lastig te interpreteren.
In dit blog gaan we in op de SQL ORDER BY clause, waarmee je output in oplopende of aflopende volgorde sorteert.
Wil je op je eigen computer meedoen met deze tutorial? Volg dan deze stappen om SQL en PgAdmin te installeren. Ook de database die we gebruiken in dit blog download je op voorgaande installatiepagina.
Inhoud
Wat is SQL ORDER BY?
Binnen SQL gebruik je ORDER BY
om output te sorteren. Je hebt de mogelijkheid om op één of meerdere columns te sorteren, zowel oplopend als aflopend.
Verschillende versies van SQL kunnen bij dezelfde query een andere volgorde in de output geven. Dit maakt het ordenen van je output nog belangrijker omdat het resultaat van een query anders erg verwarrend kan zijn.
De syntax heeft de volgende structuur: SELECT kolom1, kolom2 FROM tabel ORDER BY kolom1 ASC|DESC, kolom2 ASC|DESC;
Met ASC
(ascending oftewel oplopend) of DESC
(descending oftewel aflopend) geef je aan hoe je je output wilt sorteren. Als je niet aangeeft hoe je wilt sorteren dan wordt ASC
standaard gebruikt. Je hoeft ASC
dus niet toe te voegen als je aflopend sorteert, maar het is wel goed gebruik omdat het aangeeft dat je deze keuze bewust maakt.
In bovenstaande syntax structuur zie je dat je op meerdere kolommen kunt sorteren. Het is tevens mogelijk om binnen de ene kolom oplopend aan te houden, en binnen de volgende kolom aflopend.
Tenslotte is het mogelijk om te sorteren op kolommen die niet in je selectie zitten. Dit is echter niet heel gebruikelijk omdat het voor degene die alleen de output leest niet duidelijk is hoe de data geordend zijn.
Ook interessant: een volledige uitleg van SQL SELECT
Voorbeeldtoepassingen van SQL ORDER BY
Nu zullen we laten zien hoe je een SQL ORDER BY
statement gebruikt in de praktijk. Hiervoor gebruiken we de IMDb voorbeeld dataset die beschreven staat op deze pagina. Je kunt de dataset ook downloaden via de pagina en als je nog geen mogelijkheid hebt om met SQL te werken op jouw computer dan kun je deze installatie-stappen volgen. In de installatiestappen laten we ook zien hoe je de IMDb database configureert op jouw computer.
We zullen in al onze voorbeelden binnen dit blog gebruik maken van de SQL tabel actors, oftewel de tabel met acteurs die voorkomen in de verschillende films in de database.
Om een indruk te krijgen van de tabel voeren we de volgende query uit:
SELECT *
FROM actors;
We zien dat onze tabel een kolom bevat met id\'s, een met voornamen, een met achternamen, een met gender ("M" of "F") en een kolom met het aantal films waarin een acteur voor komt. Nu we een indruk hebben van alle data kunnen we gaan sorteren door gebruik te maken van ORDER BY
.
Sorteren op één kolom
Je kunt rijen sorteren op basis van waarden binnen een specifieke kolom. Zo kun je bijvoorbeeld met onderstaande query sorteren op het aantal films waar acteurs in spelen. Je kunt zowel oplopend (ASC
) of aflopend (DESC
) sorteren. Als je niets specificeert wordt oplopend gesorteerd.
SELECT *
FROM actors
ORDER BY film_count DESC;
We zien de eerste 9 rijen van de output. Rijen zijn gesorteerd op film_count van hoog naar laag. De acteur die in de meeste films heeft gespeeld is Kevin Bacon met 9 films.
Het is ook mogelijk om een kolom-nummer in te geven in plaats van een kolomnaam. Onderstaande query geeft hetzelfde resultaat, aangezien film_count de vijfde kolom is.
SELECT *
FROM actors
ORDER BY 5 DESC;
Sorteren op meerdere kolommen
Het is ook mogelijk om te sorteren op meerdere kolommen. Dit is vooral handig als er dubbelingen zitten in een bepaalde kolom.
Zo zijn er meerdere acteurs die in drie films spelen. Het kan handig zijn om voor acteurs die in drie films spelen, een verdere sortering te hebben op bijvoorbeeld de voornamen van actuers.
Dit realiseer je met onderstaande query.
SELECT *
FROM actors
ORDER BY film_count DESC, first_name ASC;
Zoals je ziet sorteren we de rijen eerst zo dat film_count afloopt, waarna de voornamen oplopend worden gesorteerd over rijen met dezelfde film_count.
Je bent nu in staat je output te sorteren zoals je wenst.
Ook interessant:
Wil je nog veel meer leren over SQL? Bekijk dan onze SQL cursus voor data analyse of download onderstaande opleidingsbrochure. In onze SQL cursus wisselen theorie en praktijkoefening elkaar steeds af. Nadat je deze training hebt gevolgd kun je zelfstandig met SQL werken. Je kunt ook altijd even contact opnemen via info@datasciencepartners.nl of 020 - 24 43 146 als je een vraag hebt.
Rik is data scientist en marketeer bij Data Science Partners. Vanuit zijn achtergrond op de Technische Universiteit Eindhoven heeft hij veel affiniteit met data. Na zijn studie heeft hij als consultant altijd met data gewerkt en tevens ervaring opgedaan in het geven van trainingen.