SQL Academy · leksjon

Avrunding og avkorting

ROUND, CEIL, FLOOR og TRUNC.

Leksjon 2 av 413 trinn

Avrunding og avkorting er en gratis leksjon i SQL Academy på CoddyKit. Dette er leksjon 2 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i SQL Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i SQL Academy inneholder totalt 4 leksjoner.

Hvorfor avrunding er viktig

Når du arbeider med tall i SQL, får du ofte resultater med mange desimalplasser. For eksempel gir divisjon av 10 med 3 3.3333333...

SQL tilbyr innebygde funksjoner for å styre hvor mange desimalplasser du viser eller lagrer: ROUND, CEIL, FLOOR og TRUNC. Disse er avgjørende for å presentere oversiktlige økonomiske tall, målinger og statistikk.

SELECT 10.0 / 3.0 AS raw_result;

ROUND: Grunnleggende bruk

Funksjonen ROUND() runder et tall til et angitt antall desimalplasser. Den følger standardreglene for avrunding: sifre fra og med 5 rundes opp, mens sifre under 5 rundes ned.

Syntaksen er: ROUND(number, decimal_places). Hvis du utelater det andre argumentet, rundes tallet av til nærmeste heltall.

SELECT
  ROUND(3.14159, 2) AS two_decimals,
  ROUND(3.14159, 0) AS zero_decimals,
  ROUND(3.14159)    AS no_arg;

ROUND med negative plasser

En mindre kjent funksjon ved ROUND() er at du kan angi et negativt tall som det andre argumentet. Da rundes tallet av til venstre for desimaltegnet — nyttig når du vil runde av til nærmeste tier, hundrer eller tusen.

For eksempel runder ROUND(1567, -2) av til nærmeste hundrer og gir 1600.

SELECT
  ROUND(1567.89, -1)  AS nearest_ten,
  ROUND(1567.89, -2)  AS nearest_hundred,
  ROUND(1567.89, -3)  AS nearest_thousand;

CEIL: Rund alltid opp

CEIL() (også skrevet som CEILING() i enkelte databaser) runder alltid et tall opp til nærmeste heltall, uavhengig av desimaldelen.

Dette er nyttig når du må sikre at du aldri havner under et minimum — for eksempel når du beregner hvor mange sider som trengs for å vise et sett med 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: Rund alltid ned

FLOOR() runder alltid et tall ned til nærmeste heltall, uavhengig av desimaldelen.

Legg merke til at FLOOR for negative tall runder bort fra null — FLOOR(-4.1) gir -5, ikke -4. Dette er motsatt av det noen nybegynnere 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, blir det enkelt å forstå forskjellen. CEIL går alltid opp til neste heltall, mens FLOOR alltid går nedover.

Tenk på det som en bygning: FLOOR er bakkenivået du faller ned til, mens CEIL er taket du stiger opp 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: Kutt uten avrunding

TRUNC() (eller TRUNCATE() i MySQL) fjerner desimalsifre uten avrunding. Den kutter ganske enkelt bort sifrene etter den angitte posisjonen.

Dette er forskjellig fra ROUND — TRUNC(4.9) gir 4, ikke 5. Desimaldelen forkastes bare.

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 viktigste forskjellen mellom ROUND og TRUNC er at ROUND endrer verdien basert på neste siffer, mens TRUNC alltid forkaster alt etter skjæringspunktet uten å justere verdien.

Bruk ROUND når du vil ha den matematisk nærmeste verdien. Bruk TRUNC når du vil fjerne presisjon uten noen oppjustering — noe som er vanlig i økonomiske beregninger der du aldri skal betale for mye.

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)

Bruk av ROUND i en ekte tabell

Avrundingsfunksjoner er mest nyttige når de brukes på tabellkolonner. Her oppretter vi en enkel products-tabell med priser og bruker ROUND for å vise dem på en ryddig måte.

Dette mønsteret er svært vanlig i spørringer for netthandel og regnskap, der rå beregninger gir mange desimalplasser.

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;

Kombiner funksjoner i en spørring

Du kan kombinere avrundingsfunksjoner med andre SQL-uttrykk. Du kan for eksempel beregne en rabattert pris og deretter runde den av for visning.

Denne spørringen bruker 15 % rabatt, runder resultatet av til 2 desimalplasser og viser også FLOOR og CEIL for den rabatterte prisen — slik at du får minimums- og maksimumspriser som heltall.

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 bruk av CEIL er å beregne totalt antall sider i et pagineringssystem. Hvis du har 97 rader og viser 10 per side, trenger du CEIL(97 / 10.0) = 10 sider (ikke 9, fordi den siste siden har 7 rader).

Divider alltid med et desimaltall (10.0, ikke 10) for å unngå heltallsdivisjon, som ville forkastet resten før CEIL rekker å bruke den.

SELECT
  97 AS total_rows,
  10 AS rows_per_page,
  CEIL(97 / 10.0) AS total_pages;

Hurtigsjekk

Test forståelsen din av SQL-funksjoner for avrunding.

Oppsummering av leksjonen

Godt jobbet! Her er en oppsummering av funksjonene for avrunding og avkorting i SQL:

  • ROUND(n, d) — runder av til d desimalplasser ved hjelp av standardreglene for matematikk (5+ rundes opp).
  • CEIL(n) — runder alltid opp til nærmeste heltall.
  • FLOOR(n) — runder alltid ned til nærmeste heltall.
  • TRUNC(n, d) — fjerner sifre etter posisjon d uten avrunding og øker aldri verdien.

Bruk ROUND til visning og statistikk, CEIL til beregninger av minimumskapasitet (for eksempel sider), FLOOR til beregninger av hvor mye som får plass maksimalt, og TRUNC når du aldri må runde opp — særlig i økonomiske sammenhenger.

Gratis å komme i gang

Lær deg SQL med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
46
Leksjoner
183

Ofte stilte spørsmål

Er leksjonen «Avrunding og avkorting» gratis?

Ja – hele teksten i «Avrunding og avkorting» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av SQL Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i SQL Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Avrunding og avkorting»?

ROUND, CEIL, FLOOR og TRUNC. Du øver på SQL Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med SQL Academy?

Ingen tidligere erfaring er nødvendig. SQL Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.

Hvor lang tid tar leksjonen «Avrunding og avkorting»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne SQL Academy-leksjonen?

Ja. Alle SQL Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Aritmetikk og operatorer
  2. Avrunding og avkorting
  3. Heltallsdivisjon kontra desimaldivisjon
  4. Nyttige matematiske funksjoner
← Tilbake til SQL Academy