La sottrazione non serve solo per le operazioni numeriche! SQL Server offre diverse funzioni e operatori integrati per sottrarre sia numeri sia date. E, a differenza di quando lavori con carta e penna, devi sempre tenere a mente NULL. Vediamo subito qualche esempio.
Capire le operazioni di sottrazione in SQL Server
In SQL Server le operazioni di sottrazione entrano in gioco di solito in due situazioni: calcoli aritmetici su dati numerici e manipolazione di valori datetime. Sottrarre valori torna spesso utile quando devi generare valori calcolati direttamente in SQL Server.
Sottrazione di base
Partiamo da una semplice sottrazione per chiarire il concetto. Supponiamo di avere una tabella chiamata “Orders” che contiene “TotalAmount” e “DiscountAmount”.
SELECT TotalAmount, DiscountAmount,
TotalAmount - DiscountAmount AS ActualAmount
FROM Orders;
In questo esempio di base sottraiamo “DiscountAmount” da “TotalAmount” e restituiamo il risultato come “ActualAmount”.
Usare la sottrazione sugli intervalli di tempo
La sottrazione si usa spesso anche per calcolare la differenza tra due datetime. SQL Server ha diversi tipi di data e ora: smalldatetime, datetime, datetime2, datetimeoffset. Per sottrarre date possiamo usare la funzione DATEDIFF().
Esempio:
SELECT OrderID, OrderDate,
DATEDIFF(day, OrderDate, GETDATE()) AS DaysElapsed
FROM Orders;
Questo comando calcola e mostra il numero di giorni trascorsi da quando è stato effettuato ciascun ordine fino a oggi (GETDATE restituisce la data odierna).
Aggregare i result set con la sottrazione in SQL Server
In SQL Server è piuttosto comune anche aggregare i result set usando la sottrazione. Ad esempio, potresti dover sommare le vendite totali di un periodo e sottrarre gli sconti totali concessi nello stesso periodo.
Esempio:
SELECT
( SELECT SUM(TotalAmount) FROM Orders where OrderDate like '2022-%' ) -
( SELECT SUM(DiscountAmount) FROM Orders where OrderDate like '2022-%' ) as NetSales
Il comando qui sopra mostra le vendite nette del 2022 sottraendo gli sconti totali dalle vendite totali.
Gestire NULL
In SQL Server, sottrarre da NULL restituisce un valore NULL. Se preferisci trattare NULL come 0, è importante gestire questi casi per evitare NULL inattesi nei risultati. Non sempre è la scelta giusta, quindi valuta con attenzione.
SELECT OrderID,
ISNULL(TotalAmount, 0) - ISNULL(DiscountAmount, 0) AS NetAmount
FROM Orders;
Ora sei un esperto di sottrazioni
Esistono altri modi per sottrarre valori in modo efficace in SQL Server, quindi continua a sperimentare con questi comandi e prova a esplorare ancora per conto tuo. Ogni query che scrivi ti porta un passo più vicino a padroneggiare SQL Server. Buone query!
Questo articolo è stato scritto pensando a SQL Server. Tutti i comandi e le spiegazioni si riferiscono quindi a SQL Server. Per sapere come questi comandi funzionano su altri motori di database, consulta la documentazione ufficiale di quei database.
Beekeeper Studio è una GUI per database gratuita & open source
Il miglior strumento per query & editor SQL che abbia mai usato. Offre tutto ciò che mi serve per gestire il mio database. - ⭐⭐⭐⭐⭐ Mit
Beekeeper Studio è veloce, intuitivo e facile da usare. Beekeeper supporta tantissimi database e funziona alla grande su Windows, Mac e Linux.
Cosa dicono gli utenti di Beekeeper Studio
"Beekeeper Studio ha sostituito completamente il mio vecchio workflow SQL. È veloce, intuitivo e rende di nuovo piacevole lavorare con i database."
"Ho provato tante GUI per database, ma Beekeeper trova l'equilibrio perfetto tra funzionalità e semplicità. Funziona e basta."