Ga naar hoofdinhoud

SQL ROUND onder de knie: nauwkeurig omgaan met data in analyses

Leer hoe je de SQL-functie ROUND gebruikt in deze tutorial. We behandelen de implementatie van de ROUND-functie in Oracle, MySQL, PostgreSQL en SQL Server.
· 10 min lezen

Verken met AI

Als je met data werkt, is precisie belangrijk. Maar als data scientist of data engineer krijg je dagelijks te maken met de complexiteit van het omzetten van data naar inzichten.

Omdat er altijd ruimte is om je vaardigheden aan te scherpen, kun je je capaciteiten en vertrouwen in gegevensverwerking vergroten met de SQL-functie `ROUND`.

Deze gids laat zien hoe een SQL-`ROUND`-functie de nauwkeurigheid van data in je analyses kan verfijnen.

Wat is SQL ROUND?

De ROUND-functie is een basisinstrument dat de nauwkeurigheid van numerieke data in SQL aanpast. Het rondt waarden af op een opgegeven aantal decimalen en vereenvoudigt data voor analyse.

Met SQL ROUND kun je bijvoorbeeld een getal als 3.14159 veranderen in 3.14 door af te ronden op twee decimalen. Dit is handig wanneer exacte precisie niet nodig is en afgeronde waarden voldoende zijn voor interpretatie.

Nu je weet wat SQL ROUND is, kijken we hoe je het in verschillende databases toepast.

ROUND-syntaxis

De ROUND-functie is gangbaar, maar de syntaxis is niet in alle databases gelijk. Zo verschilt het:

Syntaxis in Oracle, MySQL en PostgreSQL

In deze databases volgt ROUND een eenvoudige indeling met twee parameters:

ROUND(number, decimal_places)

Hierbij geldt:

  • Input verwijst naar het getal dat je wilt afronden.
  • Decimals geeft het aantal decimalen aan waarop je afrondt.

Syntaxis in SQL Server

SQL Server voegt echter een draai aan dit format toe: er is een optionele derde parameter, function:

ROUND(number, decimal_places [, function])

Hierbij geldt:

  • De eerste twee parameters, input en decimals, werken net zoals in de andere databases.
  • De optionele parameter function bepaalt de afrondingsrichting onder bepaalde omstandigheden.

Dit syntaxisverschil lijkt klein, maar is cruciaal om te begrijpen, omdat het je helpt de ROUND-functie correct toe te passen, ongeacht de databaseomgeving waarin je werkt.

Parameters van de SQL ROUND-functie

De ROUND-functie gebruikt drie hoofdparameters: input, decimals en operation. Door deze parameters te begrijpen, kun je de functie effectief gebruiken in SQL-databases.

Input-parameter

Input is het getal dat je wilt afronden. Dit kan een direct getal zijn, een databasekolom of het resultaat van een expressie.

Decimal-parameter

De decimal-parameter bepaalt op hoeveel decimalen je de input afrondt. Een positief getal rondt af op dat aantal decimalen.

Function-parameter

De parameter function is optioneel. Deze bepaalt de afrondingsrichting voor waarden die precies in het midden van twee getallen liggen. Standaard is de waarde 0. Elke andere waarde zorgt ervoor dat de functie de input afkapt (trunceren) zonder af te ronden.

Met deze parameters kun je getallen precies en gecontroleerd afronden.

SQL ROUND gebruiken in SQL-databases

Je kunt SQL ROUND in verschillende SQL-databases gebruiken. Afhankelijk van de database kunnen syntaxis en gedrag licht verschillen.

Zo gebruik je het in enkele van de populairste databases:

Implementatie in Oracle

De ROUND-functie in Oracle werkt met numerieke data en datumwaarden. Bij getallen rondt het de waarde af op de opgegeven decimaal.

Voor datumwaarden kan ROUND een datum aanpassen naar de dichtstbijzijnde dag, maand, jaar, enz., afhankelijk van het opgegeven formaat.

Zo werkt het in Oracle:

Stel, je hebt de volgende tabel PRODUCTS.

image8.jpg

Als je de kolom standard_cost nu wilt afronden op één decimaal, maak je deze query.

SELECT Round(STANDARD_COST, 1) 
FROM PRODUCTS

Zo ziet de afgeronde kostprijs eruit.

image7.jpg

Implementatie in MySQL

In MySQL werkt ROUND vergelijkbaar om getallen af te ronden op een opgegeven precisie.

Zo werkt het:

Stel, je hebt de volgende tabel purchase_details.

image16.jpg

Als je de kolom Paid_amount nu wilt afronden op twee decimalen, maak je deze query.

SELECT Round(Paid_amount, 2) 
AS Result
FROM purchase_details

Zo ziet het afgeronde bedrag eruit.

image3.jpg

Implementatie in PostgreSQL

PostgreSQL implementeert ROUND ook op vergelijkbare wijze. Zo kun je het toepassen:

Stel, je hebt de volgende tabel reviews.

image14.jpg

Als je de kolom imdb_score nu wilt afronden op nul decimalen, maak je deze query.

SELECT Round(imdb_score, 0) 
AS Result 
FROM cinema.reviews

Zo zien de afgeronde filmbeoordelingen eruit.

image9.jpg

Implementatie in SQL Server

In Microsoft SQL Server gedraagt ROUND zich vergelijkbaar met Oracle bij numerieke waarden.

Een uniek aspect van SQL Server is echter de derde parameter — function — waarmee je kunt aangeven of je het getal wilt afronden (function = 0 of weggelaten) of afkappen (function = 1).

Zo werkt SQL-ROUND in een SQL Server:

Stel, je hebt de volgende tabel order_items.

image10.jpg

Als je de kolom list_price nu wilt afronden op één decimaal, maak je deze query.

SELECT Round(list_price, 1,0) 
AS Result 
FROM sales.order_items

Zo ziet de afgeronde prijs eruit.

image6.jpg

Praktische implementatie

Nu je de parameters kent, is het tijd om de ROUND-functie in de praktijk toe te passen. Laten we bekijken hoe je dit doet met getallen en datums in data-analyse.

ROUND met getallen

Stel, je hebt een tabel orderDetails met een kolom prijzen met meerdere decimalen.

image4.jpg

Als je de kolom Price nu wilt afronden op één decimaal, maak je deze query.

SELECT Round(Price, 1) 
AS Result
FROM orderDetails

Deze query rondt elke prijs in de tabel af op één decimaal.

En zo ziet het resultaat eruit:

image2.jpg

ROUND met datums

In SQL kun je datumwaarden afronden op een specifieke component, zoals jaar, maand, uur of minuut.

Stel, je hebt een tabel orders.

image5.jpg

Als je de kolom order_date nu wilt afronden op het dichtstbijzijnde jaar, maak je deze query:

SELECT YEAR(order_date) 
AS ROUNDED_DATE
FROM sales.orders

Deze query rondt elke datum in de kolom af naar het dichtstbijzijnde jaar.

En zo ziet het resultaat eruit:

image15.jpg

Geavanceerde technieken met SQL ROUND

Naast basisafronding wordt de SQL-ROUND-functie ook gebruikt in meer geavanceerde scenario's, zoals:

  • SQL afronden naar boven
  • SQL afronden naar beneden
  • Afronden op specifieke intervallen

Zo werkt elk van deze:

SQL ROUND naar boven en ROUND naar beneden

Hoewel de ROUND-functie naar de dichtstbijzijnde waarde afrondt, kun je een specifieke richting forceren met de functies CEIL en FLOOR.

De functie CEIL rondt elke decimale waarde naar boven af tot het eerstvolgende gehele getal. Bijvoorbeeld:

Je hebt een tabel genaamd reviews.

image13.jpg

Zo pas je de functie CEIL toe op de kolom user_score.

Select CEIL(user_score) 
FROM reviews

Dit is het resultaat:

image11.jpg

In tegenstelling tot CEIL rondt FLOOR elke decimale waarde naar beneden af tot het dichtstbijzijnde gehele getal. Bijvoorbeeld:

Als je FLOOR toepast op de eerdere tabel reviews, maak je deze query:

Select FLOOR(user_score) 
FROM reviews

Dit is het resultaat:

image1.jpg

Afronden op specifieke intervallen

Soms moet je getallen afronden op specifieke intervallen, zoals de dichtstbijzijnde 5, 10 of 100. Hiervoor combineer je ROUND met deling en vermenigvuldiging.

Stel dat je een getal of kolom wilt afronden op de dichtstbijzijnde 10. Dan maak je de volgende query:

SELECT Round(number / 10) * 10
FROM table_name

Deze techniek helpt bij vraagstukken in voorraadbeheer of statistische analyse, waar data in specifieke intervallen logischer is.

Vergelijkbare functies met SQL ROUND

Naast ROUND bestaan er in SQL diverse andere functies voor het afronden en afkappen van getallen.

CEIL-functie

De CEILING-functie, of CEIL, rondt een getal naar boven af tot het dichtstbijzijnde geheel getal of een opgegeven precisie. CEILING rondt altijd naar boven af, in tegenstelling tot ROUND, dat naar de dichtstbijzijnde waarde afrondt.

Voorbeeld: CEILING(2.3) geeft 3 terug.

Deze functie is vooral nuttig wanneer je wilt garanderen dat de afgeronde waarde niet kleiner is dan het origineel.

FLOOR-functie

De functie FLOOR rondt een getal naar beneden af tot het dichtstbijzijnde geheel getal of een opgegeven precisie.

Voorbeeld: FLOOR(2.7) geeft 2 terug.

Deze functie zorgt ervoor dat het afgeronde getal niet groter is dan het origineel.

TRUNC-functie

De functie TRUNC (truncate) verwijdert het decimale deel van een getal en kapt af richting nul.

Voorbeeld: TRUNC(2.9) geeft 2 terug, en TRUNC(-2.9) geeft -2 terug.

TRUNC verwijdert het fractionele deel van een getal zonder het per se af te ronden.

Kortom, elke functie — CEILING, FLOOR en TRUNC — heeft een specifiek doel bij datamanipulatie en vormt een aanvulling op de ROUND-functie.

Met deze functies kun je een breed scala aan afrondingsscenario's aan met meer precisie en geschiktheid voor de gegeven datacontext. Wil je meer van dit soort SQL-technieken leren? Bekijk dan de cheat sheet en ga aan de slag.

Conclusie

Je data op orde krijgen is superbelangrijk, en de SQL-ROUND-functie is een geweldige manier om te zorgen dat je cijfers prettig bruikbaar zijn. Je rondt je getallen af op het gewenste aantal decimalen en maakt je data begrijpelijker.

Als je op een specifieke manier moet afronden, heb je andere functies zoals CEIL, FLOOR en TRUNC achter de hand.

Of je nu net begint als junior dataprofessional of je skills wilt aanscherpen, cursussen zoals SQL Fundamentals en Intermediate SQL helpen je op weg.

Tijd om het in de praktijk te brengen. Succes!

Laiba Siddiqui

Auteur

Laiba Siddiqui

Ik ben een contentstrateeg die graag complexe onderwerpen eenvoudig maakt. Ik heb bedrijven als Splunk, Hackernoon en Tiiny Host geholpen om boeiende en informatieve content te maken voor hun doelgroep.

Onderwerpen

Gerelateerd