SQL Academy · Lektion

Afrunding og trunkering

ROUND, CEIL, FLOOR og TRUNC.

Lektion 2 af 413 trin

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.

Gratis at komme i gang

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

  1. Aritmetik og operatorer
  2. Afrunding og trunkering
  3. Heltalsdivision kontra decimaldivision
  4. Nyttige matematiske funktioner
← Tilbage til SQL Academy