Colonne calcolate e precedenza delle espressioni
Aritmetica, concatenazione e precedenza degli operatori negli elenchi SELECT
Colonne calcolate e precedenza delle espressioni è una lezione Coding 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 Coding Interview Prep, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Coding 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.5Precedenza 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; -- 20La 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 Coding Interview Prep, passa a CoddyKit PRO. Il corso Coding 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 Coding 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 Coding Interview Prep?
Non è richiesta alcuna esperienza precedente. Coding 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 Coding Interview Prep?
Sì. Ogni lezione Coding 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
- Proiezione delle colonne e insidie degli alias
- Colonne calcolate e precedenza delle espressioni
- DISTINCT e GROUP BY per l'unicità
- Espressioni CASE in SELECT