0Pricing
SQL Academy · Lezione

Arrotondamento e troncamento

ROUND, CEIL, FLOOR e TRUNC

Arrotondamento e troncamento è una lezione SQL Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento SQL Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso SQL Academy include 4 lezioni in totale.

Perché l'arrotondamento è importante

Quando si lavora con i numeri in SQL, spesso si ottengono risultati con molte cifre decimali. Ad esempio, dividendo 10 per 3 si ottiene 3.3333333...

SQL fornisce funzioni integrate per controllare quante cifre decimali visualizzare o memorizzare: ROUND, CEIL, FLOOR e TRUNC. Sono essenziali per presentare in modo chiaro valori finanziari, misurazioni e statistiche.

SELECT 10.0 / 3.0 AS raw_result;

ROUND: utilizzo di base

La funzione ROUND() arrotonda un numero a un numero specificato di cifre decimali. Segue le regole standard dell'arrotondamento: le cifre pari o superiori a 5 vengono arrotondate per eccesso, quelle inferiori a 5 per difetto.

La sintassi è: ROUND(number, decimal_places). Se si omette il secondo argomento, il numero viene arrotondato all'intero più vicino.

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

ROUND con posizioni negative

Una funzionalità meno nota di ROUND() consiste nel poter passare un numero negativo come secondo argomento. In questo modo si arrotonda a sinistra della virgola decimale, una funzione utile per arrotondare alla decina, al centinaio o al migliaio più vicino.

Ad esempio, ROUND(1567, -2) arrotonda al centinaio più vicino e restituisce 1600.

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

CEIL: arrotondare sempre per eccesso

CEIL() (scritto anche come CEILING() in alcuni database) arrotonda sempre un numero per eccesso all'intero più vicino, indipendentemente dalla parte decimale.

È utile quando si deve garantire di non scendere mai sotto un minimo, ad esempio per calcolare il numero di pagine necessarie a visualizzare un insieme di risultati.

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: arrotondare sempre per difetto

FLOOR() arrotonda sempre un numero per difetto all'intero più vicino, indipendentemente dalla parte decimale.

Noti che, per i numeri negativi, FLOOR arrotonda allontanandosi dallo zero: FLOOR(-4.1) restituisce -5, non -4. Questo comportamento è l'opposto di ciò che alcuni principianti si aspettano.

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 e FLOOR a confronto

Osservare insieme CEIL e FLOOR rende facile comprenderne la differenza. CEIL passa sempre all'intero successivo, mentre FLOOR passa sempre a quello precedente.

Si può pensare a un edificio: FLOOR è il pavimento verso cui si cade, mentre CEIL è il soffitto verso cui si sale.

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: troncare senza arrotondare

TRUNC() (o TRUNCATE() in MySQL) rimuove le cifre decimali senza arrotondare. Si limita a eliminare le cifre successive alla posizione specificata.

È diverso da ROUND: TRUNC(4.9) restituisce 4, non 5. La parte decimale viene semplicemente scartata.

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;

Confronto tra ROUND e TRUNC

La differenza fondamentale tra ROUND e TRUNC è che ROUND modifica il valore in base alla cifra successiva, mentre TRUNC scarta sempre tutto ciò che segue il punto di troncamento, senza apportare modifiche.

Usi ROUND quando desidera il valore matematicamente più vicino. Usi TRUNC quando desidera ridurre rigorosamente la precisione senza alcun arrotondamento per eccesso, una pratica comune nei calcoli finanziari in cui non si dovrebbe mai pagare più del dovuto.

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)

Usare ROUND in una tabella reale

Le funzioni di arrotondamento danno il meglio quando vengono applicate alle colonne di una tabella. Qui si crea una semplice tabella products con i prezzi e si applica ROUND per visualizzarli in modo ordinato.

Questo schema è molto comune nelle query di e-commerce e contabilità, in cui i calcoli non arrotondati producono molte cifre decimali.

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;

Combinare funzioni in una query

È possibile combinare le funzioni di arrotondamento con altre espressioni SQL. Ad esempio, si può calcolare un prezzo scontato e poi arrotondarlo per la visualizzazione.

Questa query applica uno sconto del 15%, arrotonda il risultato a 2 cifre decimali e mostra anche FLOOR e CEIL del prezzo scontato, fornendo il prezzo intero minimo e quello massimo.

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;

Paginazione con CEIL

Un uso classico di CEIL consiste nel calcolare il numero totale di pagine in un sistema di paginazione. Se si hanno 97 righe e se ne visualizzano 10 per pagina, servono CEIL(97 / 10.0) = 10 pagine, non 9, perché l'ultima pagina contiene 7 righe.

Divida sempre per un numero decimale (10.0, non 10) per evitare la divisione intera, che eliminerebbe il resto prima che CEIL possa operare.

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

Verifica rapida

Verifichi la Sua comprensione delle funzioni di arrotondamento di SQL.

Riepilogo della lezione

Ottimo lavoro! Ecco un riepilogo delle funzioni di arrotondamento e troncamento in SQL:

  • ROUND(n, d) — arrotonda a d cifre decimali usando le regole matematiche standard (5+ viene arrotondato per eccesso).
  • CEIL(n) — arrotonda sempre per eccesso all'intero più vicino.
  • FLOOR(n) — arrotonda sempre per difetto all'intero più vicino.
  • TRUNC(n, d) — rimuove le cifre successive alla posizione d senza arrotondare; non aumenta mai il valore.

Usi ROUND per la visualizzazione e le statistiche, CEIL per i calcoli della capacità minima (come il numero di pagine), FLOOR per i calcoli della quantità massima contenibile e TRUNC quando non si deve mai arrotondare per eccesso, soprattutto in ambito finanziario.

Domande Frequenti

La lezione «Arrotondamento e troncamento» è gratuita?

Sì — il testo completo di «Arrotondamento e troncamento» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso SQL Academy, passa a CoddyKit PRO. Il corso SQL Academy include 4 lezioni in totale.

Cosa imparerò in «Arrotondamento e troncamento»?

ROUND, CEIL, FLOOR e TRUNC Eserciti SQL Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare SQL Academy?

Non è richiesta alcuna esperienza precedente. SQL Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Arrotondamento e troncamento»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione SQL Academy?

Sì. Ogni lezione SQL Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Aritmetica e operatori
  2. Arrotondamento e troncamento
  3. Divisione tra interi e decimali
  4. Funzioni matematiche utili
← Torna a SQL Academy