sql order by voorbeeld uitleg tutorial

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 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;

sql order by indruk data

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;

sql order by één kolom asc of 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;

sql order by één column asc of desc

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. Door middel van theorie en praktijkoefening wordt er een kwalitatieve basis gelegd. Nadat je deze training hebt gevolgd kun je zelfstandig verder aan de slag. Je kunt ook altijd even contact opnemen via info@datasciencepartners.nl of 020 - 24 43 146 als je een vraag hebt.

by: