Afrunding og trunkering
ROUND, CEIL, FLOOR og TRUNC.
Afrunding og trunkering er en gratis SQL Academy-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i SQL Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. SQL Academy-kurset indeholder 4 lektioner i alt.
Hvorfor afrunding er vigtig
Når du arbejder med tal i SQL, får du ofte resultater med mange decimalpladser. Hvis du f.eks. dividerer 10 med 3, får du 3.3333333...
SQL har indbyggede funktioner til at styre, hvor mange decimalpladser du viser eller gemmer: ROUND, CEIL, FLOOR og TRUNC. De er afgørende for at præsentere overskuelige økonomiske tal, målinger og statistikker.
SELECT 10.0 / 3.0 AS raw_result;Grundlæggende brug af ROUND
Funktionen ROUND() afrunder et tal til et angivet antal decimalpladser. Den følger almindelige afrundingsregler: cifre på 5 eller derover rundes op, og cifre under 5 rundes ned.
Syntaksen er: ROUND(number, decimal_places). Hvis du udelader det andet argument, afrundes der til nærmeste hele tal.
SELECT
ROUND(3.14159, 2) AS two_decimals,
ROUND(3.14159, 0) AS zero_decimals,
ROUND(3.14159) AS no_arg;ROUND med negative decimalpladser
En mindre kendt funktion i ROUND() er, at du kan angive et negativt tal som det andet argument. Så afrundes der til venstre for decimaltegnet — hvilket er nyttigt, når du vil afrunde til nærmeste tier, hundrede eller tusinde.
For eksempel afrunder ROUND(1567, -2) til nærmeste hundrede og giver 1600.
SELECT
ROUND(1567.89, -1) AS nearest_ten,
ROUND(1567.89, -2) AS nearest_hundred,
ROUND(1567.89, -3) AS nearest_thousand;CEIL afrunder altid op
CEIL() (også skrevet som CEILING() i nogle databaser) afrunder altid et tal op til nærmeste heltal, uanset decimaldelen.
Det er nyttigt, når du skal sikre, at du aldrig kommer under et minimum — f.eks. når du beregner, hvor mange sider der skal bruges til at vise et sæt resultater.
SELECT
CEIL(4.1) AS ceil_4_1,
CEIL(4.9) AS ceil_4_9,
CEIL(-4.1) AS ceil_neg_4_1,
CEIL(-4.9) AS ceil_neg_4_9;FLOOR afrunder altid ned
FLOOR() afrunder altid et tal ned til nærmeste heltal, uanset decimaldelen.
Bemærk, at FLOOR for negative tal afrunder væk fra nul — FLOOR(-4.1) giver -5, ikke -4. Det er den modsatte adfærd af det, som nogle begyndere forventer.
SELECT
FLOOR(4.9) AS floor_4_9,
FLOOR(4.1) AS floor_4_1,
FLOOR(-4.1) AS floor_neg_4_1,
FLOOR(-4.9) AS floor_neg_4_9;CEIL og FLOOR side om side
Når du ser CEIL og FLOOR sammen, bliver forskellen let at forstå. CEIL går altid op til det næste hele tal, mens FLOOR altid går ned.
Forestil dig en bygning: FLOOR er det niveau, du falder ned til, og CEIL er det loft, du stiger op til.
SELECT
2.3 AS original,
CEIL(2.3) AS ceil_result,
FLOOR(2.3) AS floor_result
UNION ALL
SELECT
7.8,
CEIL(7.8),
FLOOR(7.8);TRUNC afkorter uden afrunding
TRUNC() (eller TRUNCATE() i MySQL) fjerner decimalcifre uden afrunding. Funktionen fjerner ganske enkelt cifrene efter den angivne position.
Det adskiller sig fra ROUND — TRUNC(4.9) giver 4, ikke 5. Decimaldelen kasseres ganske enkelt.
SELECT
TRUNC(4.9) AS trunc_4_9,
TRUNC(4.1) AS trunc_4_1,
TRUNC(-4.9) AS trunc_neg_4_9,
TRUNC(3.14159, 3) AS trunc_3_decimals;ROUND og TRUNC sammenlignet
Den vigtigste forskel mellem ROUND og TRUNC er, at ROUND ændrer værdien ud fra det næste ciffer, mens TRUNC altid kasserer alt efter skæringspunktet uden at justere værdien.
Brug ROUND, når du vil have den matematisk nærmeste værdi. Brug TRUNC, når du vil fjerne præcision strengt uden at justere op — hvilket er almindeligt i økonomiske beregninger, hvor du aldrig må betale for meget.
SELECT
ROUND(2.567, 1) AS rounded,
TRUNC(2.567, 1) AS truncated;
-- ROUND gives 2.6 (5 rounds up)
-- TRUNC gives 2.5 (just cuts off)Brug af ROUND i en rigtig tabel
Afrundingsfunktioner er mest effektive, når de anvendes på tabelkolonner. Her opretter vi en simpel products-tabel med priser og bruger ROUND til at vise dem overskueligt.
Dette mønster er meget almindeligt i forespørgsler til e-handel og regnskab, hvor rå beregninger giver mange decimalpladser.
CREATE TABLE products (
name TEXT,
price NUMERIC
);
INSERT INTO products VALUES
('Widget', 9.999),
('Gadget', 24.3333),
('Doohickey', 4.5678);
SELECT name, ROUND(price, 2) AS display_price
FROM products;Kombination af funktioner i en forespørgsel
Du kan kombinere afrundingsfunktioner med andre SQL-udtryk. Du kan f.eks. beregne en nedsat pris og derefter afrunde den til visning.
Denne forespørgsel anvender en rabat på 15 %, afrunder resultatet til 2 decimalpladser og viser også FLOOR og CEIL for den nedsatte pris — så du får minimums- og maksimumspriser som hele tal.
SELECT
name,
price,
ROUND(price * 0.85, 2) AS discounted,
FLOOR(price * 0.85) AS min_price,
CEIL(price * 0.85) AS max_price
FROM products;Paginering med CEIL
En klassisk anvendelse af CEIL er at beregne det samlede antal sider i et pagineringssystem. Hvis du har 97 rækker og viser 10 pr. side, har du brug for CEIL(97 / 10.0) = 10 sider (ikke 9, fordi den sidste side har 7 rækker).
Divider altid med et decimaltal (10.0, ikke 10) for at undgå heltalsdivision, som ville kassere resten, før CEIL kan behandle den.
SELECT
97 AS total_rows,
10 AS rows_per_page,
CEIL(97 / 10.0) AS total_pages;Hurtigt tjek
Kontrollér din forståelse af SQL's afrundingsfunktioner.
Opsummering af lektionen
Godt gået! Her er en opsummering af afrundings- og afkortningsfunktionerne i SQL:
- ROUND(n, d) — afrunder til d decimalpladser efter almindelige matematiske regler (5 og derover rundes op).
- CEIL(n) — afrunder altid op til nærmeste heltal.
- FLOOR(n) — afrunder altid ned til nærmeste heltal.
- TRUNC(n, d) — fjerner cifre efter position d uden afrunding; øger aldrig værdien.
Brug ROUND til visning og statistik, CEIL til beregninger af minimumskapacitet (f.eks. sider), FLOOR til beregninger af det maksimale antal, der kan være plads til, og TRUNC, når du aldrig må afrunde op — især i økonomiske sammenhænge.
Lær SQL med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 46
- Lektioner
- 183
Ofte stillede spørgsmål
Er lektionen “Afrunding og trunkering” gratis?
Ja — hele teksten til “Afrunding og trunkering” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af SQL Academy-kurset, skal du opgradere til CoddyKit PRO. SQL Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Afrunding og trunkering”?
ROUND, CEIL, FLOOR og TRUNC. Du øver dig i SQL Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på SQL Academy?
Der kræves ingen tidligere erfaring. SQL Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.
Hvor lang tid tager lektionen “Afrunding og trunkering”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne SQL Academy-lektion?
Ja. Alle SQL Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Aritmetik og operatorer
- Afrunding og trunkering
- Heltalsdivision kontra decimaldivision
- Nyttige matematiske funktioner