0Pricing
SQL Interview Prep · Lezione

Colonne calcolate e precedenza delle espressioni

Aritmetica, concatenazione e precedenza degli operatori negli elenchi SELECT

Colonne calcolate e precedenza delle espressioni è una lezione SQL Interview Prep 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 Interview Prep, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso SQL Interview Prep include 4 lezioni in totale.

Colonne calcolate in SELECT

Una colonna calcolata è un'espressione in SELECT che ricava un valore invece di leggerlo direttamente, come price * quantity. Le assegni sempre un alias chiaro.

SELECT product,
       price,
       quantity,
       price * quantity AS line_total
FROM order_items;

Operatori aritmetici

SQL dispone degli operatori matematici che ci si aspetta: +, -, *, /, oltre al modulo. Il tipo del risultato dipende dagli operandi, ed è qui che si nasconde il prossimo problema.

SELECT 7 + 3 AS sum_val,
       7 - 3 AS diff_val,
       7 * 3 AS prod_val,
       7 % 3 AS remainder;

Il problema della divisione intera

Faccia attenzione: dividere due numeri interi esegue una divisione intera, quindi 5 / 2 restituisce 2, non 2.5. Per risolvere il problema, converta uno dei due operandi in decimale oppure moltiplichi per 1.0.

SELECT 5 / 2          AS int_div,    -- 2
       5 * 1.0 / 2    AS real_div,   -- 2.5
       CAST(5 AS DECIMAL) / 2 AS cast_div; -- 2.5

Precedenza degli operatori

SQL segue la normale precedenza matematica: * e / vengono eseguiti prima di + e -. Quindi 2 + 3 * 4 vale 14, non 20. Le parentesi hanno la precedenza su tutto.

SELECT 2 + 3 * 4      AS no_parens,  -- 14
       (2 + 3) * 4    AS with_parens; -- 20

La precedenza in una query reale per applicare uno sconto

Gli errori di precedenza sono frequenti nella logica di business. Per un prezzo scontato, price - price * rate è corretto perché * viene eseguito per primo. Verifichi sempre che il raggruppamento effettivamente utilizzato dal motore sia quello previsto.

SELECT price,
       discount_rate,
       price - price * discount_rate / 100 AS net_price
FROM products;

Concatenazione di stringhe

L'unione del testo dipende dal database: || in Postgres e nello standard SQL, + in SQL Server e CONCAT() in MySQL. CONCAT() è la scelta sicura e portabile.

-- Postgres / standard
SELECT first_name || ' ' || last_name AS full_name
FROM employees;

-- Portable
SELECT CONCAT(first_name, ' ', last_name) AS full_name
FROM employees;

NULL compromette i calcoli

Un punto importante: qualsiasi operazione matematica con NULL restituisce NULL. Quindi base_salary + bonus restituisce NULL per chi non ha un bonus. Racchiuda le colonne potenzialmente problematiche in COALESCE per fornire un valore predefinito.

SELECT base_salary,
       bonus,
       base_salary + bonus            AS unsafe_total,
       base_salary + COALESCE(bonus,0) AS safe_total
FROM employees;

Concatenazione e NULL nei diversi dialetti

NULL influisce anche sul testo e i dialetti si comportano diversamente: Postgres fa scomparire l'intera stringa, mentre CONCAT di SQL Server tratta NULL come una stringa vuota. Racchiuda ogni parte in COALESCE per ottenere un output prevedibile.

SELECT COALESCE(first_name,'') || ' ' || COALESCE(last_name,'') AS full_name
FROM employees;

Funzioni nelle espressioni

Le colonne calcolate possono contenere tranquillamente funzioni come ROUND, ABS o UPPER. Una chiamata di funzione è semplicemente un'altra espressione, quindi può essere inserita direttamente nei calcoli.

SELECT product,
       ROUND(price * quantity * 1.0, 2) AS line_total,
       UPPER(product)                   AS product_caps
FROM order_items;

Conversione dei tipi e CAST

Quando i tipi degli operandi differiscono, SQL esegue una conversione implicita che può produrre risultati sorprendenti. Sia esplicito con CAST(expr AS type): durante un colloquio, questo viene interpretato come codice attento e difensivo.

SELECT 'Order #' || CAST(order_id AS VARCHAR) AS label
FROM orders;

Espressioni booleane come colonne

Un confronto come price > 100 è a sua volta un'espressione. Postgres può selezionarlo come true/false, ma la soluzione portabile consiste nel racchiuderlo in un CASE per produrre 1/0 o un'etichetta.

-- Portable
SELECT product,
       CASE WHEN price > 100 THEN 1 ELSE 0 END AS is_pricey
FROM products;

Verifica rapida

Valuti l'espressione.

Riepilogo

Riepilogo: assegni un alias alle colonne calcolate. Utilizzi CAST per la divisione decimale, presti attenzione alla precedenza, utilizzi CONCAT() per il testo portabile e ricordi che NULL compromette i calcoli, quindi lo gestisca con COALESCE.

Domande Frequenti

La lezione «Colonne calcolate e precedenza delle espressioni» è gratuita?

Sì — il testo completo di «Colonne calcolate e precedenza delle espressioni» è 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 Interview Prep, passa a CoddyKit PRO. Il corso SQL Interview Prep include 4 lezioni in totale.

Cosa imparerò in «Colonne calcolate e precedenza delle espressioni»?

Aritmetica, concatenazione e precedenza degli operatori negli elenchi SELECT Eserciti SQL Interview Prep 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 Interview Prep?

Non è richiesta alcuna esperienza precedente. SQL Interview Prep 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 «Colonne calcolate e precedenza delle espressioni»?

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 Interview Prep?

Sì. Ogni lezione SQL Interview Prep 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. Proiezione delle colonne e insidie degli alias
  2. Colonne calcolate e precedenza delle espressioni
  3. DISTINCT e GROUP BY per l'unicità
  4. Espressioni CASE in SELECT
← Torna a SQL Interview Prep