3rd Nov 2022 Tempo di lettura: 6 minuti Come funziona l'operatore di divisione in SQL Andrew Bone sql imparare sql division Indice Come vengono divisi gli interi in SQL? Cambiare gli operandi in numeri decimali o a virgola mobile Uso di CAST o CONVERT sulle colonne Ottenere il massimo con l'operatore di divisione SQL! L'operatore di divisione in SQL viene utilizzato per dividere un'espressione o un numero per un altro. Questo articolo vi mostrerà come impiegarlo nel modo corretto e gli errori più comuni da evitare. Il modo migliore per esercitarsi con SQL è il nostro percorso interattivo di Pratica SQL. Contiene oltre 600 esercizi pratici che affrontano diversi argomenti di SQL, dalle semplici query con una sola tabella, alle operazioni JOIN, fino ad argomenti complessi come le subquery. In questo modo è possibile allenare le proprie competenze SQL su esempi aziendali reali. La divisione in SQL è considerata un operatore aritmetico. Questi sono l'addizione (+), la sottrazione (-), la moltiplicazione (*), la divisione (/) e il modulo (%). Questo articolo si concentra sull'operatore di divisione, discutendo le regole da seguire e alcuni errori comuni a cui prestare attenzione quando si cerca di dividere in SQL. La sintassi dell'operatore di divisione in SQL è la seguente: SELECT <expression> / <expression> FROM table [WHERE expression] Si noti che l'inclusione della clausola WHERE è del tutto facoltativa. L'operatore di divisione può essere utilizzato ovunque ci sia un'espressione. Ciò significa che è possibile utilizzare l'operatore di divisione in SQL con: SELECT. WHERE. HAVING. ORDER BY. O come parte di una funzione. L'esempio più semplice dell'impiego dell'operatore di divisione è il seguente: SELECT 10 / 2 È possibile eseguire questa query e ottenere il risultato, in questo caso 5. Tuttavia, è più probabile che si lavori con numeri interi che risiedono in colonne all'interno delle tabelle del database. Vediamo un esempio di questo tipo. Utilizzeremo una tabella chiamata inventario, che contiene i prodotti alimentari tipici insieme al loro prezzo e alla quantita. inventario articoloprezzoquantita Uova1512 Latte34 Farina52 Pane103 Applichiamo l'operatore di divisione a un'intera colonna della nostra tabella e vediamone l'effetto. Consideriamo la seguente query SQL: SELECT quantita, quantita / 2 AS 'risultato' FROM livello_inventario Con questa query, selezioniamo la colonna quantita e mostriamo il risultato della divisione del valore quantita nella colonna risultato che contiene il risultato di quantita / 2. Eseguiamo questa query e osserviamo i risultati: quantitarisultato 126 42 21 31 I risultati sono quelli che ci aspetteremmo, tranne che per l'ultima riga. Non è forse 3 / 2 = 1,5?! Il risultato mostrato da SQL Server è pari a 1. A seconda della variante di SQL in uso, l'operatore di divisione può gestire la divisione di interi in modo diverso. Chiariamo questo aspetto nella prossima sezione! Come vengono divisi gli interi in SQL? Le divisioni di interi possono comportarsi in modo diverso a seconda del sistema di gestione scelto per un database SQL. Gli utenti di MySQL e Oracle possono aspettarsi di trovare il risultato esatto, mostrato con il tipo di dati float, per esempio 3 / 2 = 1,5. Per gli utenti di SQL Server e PostgreSQL, invece, la divisione dei numeri interi è più complessa. È necessario ricordare alcune regole quando si dividono numeri che non danno come risultato un numero intero. Riprendiamo l'esempio precedente: SELECT 3 / 2; Quando viene eseguita in SQL Server o PostgreSQL, il risultato di questa query è 1, mentre la maggior parte degli utenti si aspetterebbe 1,5. Cosa succede? L'operatore di divisione gestisce solo la parte intera del risultato quando divide due numeri interi. Il risultato ottenuto è chiamato quoziente. Il resto non viene considerato. Con la divisione di due numeri interi, il risultato sarà quante volte un numero andrà a finire in un altro, senza frazionamenti. Considerate questi esempi in SQL Server o PostgreSQL: Query di divisioneRisultato SELECT 10 / 33 SELECT 5 / 22 SELECT 11 / 61 Cambiare gli operandi in numeri decimali o a virgola mobile Questa operazione può essere eseguita solo se la particolare operazione di divisione lo consente. Se sono coinvolti due nomi di colonna, questo metodo non è applicabile; dovrete usare invece il metodo CAST/CONVERT descritto di seguito. È necessario accedere direttamente a uno dei numeri. L'uso di questo metodo è semplice: basta cambiare uno o entrambi gli operandi: Query di divisioneRisultato SELECT 10.0 / 33.333333 SELECT 5 / 2.02.5 SELECT 11.0 / 6.01.833333 Possiamo applicare questo metodo anche all'esempio precedente inventario. Dobbiamo aggiornare la nostra query come segue: SELECT quantita, quantita / 2.0 AS 'risultato' FROM livello_inventario L'esecuzione di questa query produce un set di risultati simile a quello precedente, con una differenza fondamentale. quantitarisultato 126.00000 42.00000 21.00000 31.50000 Questo metodo è ideale se si può accedere e modificare direttamente uno degli operandi. Tuttavia, non è sempre così. Uso di CAST o CONVERT sulle colonne Immaginiamo di dividere il valore della colonna prezzo per la colonna quantità per un particolare articolo. La nostra query avrebbe il seguente aspetto: SELECT prezzo / quantita FROM inventario WHERE articolo = 'Farina' L'esecuzione di questa query mostra 2 come risultato; si tratta di un classico caso di divisione tra interi. Per ovviare a questo problema, si può usare il metodo CAST su una delle colonne. Dobbiamo aggiornare la nostra query come segue: SELECT CAST(prezzo AS DECIMAL(7,2)) / quantita AS 'CAST(prezzo)/quantita' FROM inventario WHERE articolo = 'Farina' Si può anche usare CONVERT invece di CAST. Puoi approfondire qui l'argomento della conversione di un intero utilizzando CAST e CONVERT. L'esecuzione di questa query mostra un nuovo risultato: CAST(prezzo)/quantita 2.50000 Ecco fatto! L'operazione CAST è stata applicata con successo alla colonna prezzo, rendendola di tipo decimale per questa operazione aritmetica. Si noti che se l'espressione aritmetica contiene più di un operatore, gli operatori di moltiplicazione e divisione vengono valutati per primi, seguiti da quelli di addizione e sottrazione. Quando due operatori hanno la stessa priorità, l'espressione viene valutata da sinistra a destra. Occorre inoltre tenere presente l'errore SQL "divisione per zero", indipendentemente dal sistema di gestione utilizzato. Dividendo per zero si ottiene un risultato indefinito, cosa che SQL non consente. In questo caso viene visualizzato un messaggio di errore. Questa utile pagina del cookbook SQL mostra come gestire l'errore "divisione per zero" in SQL. Dateci un'occhiata se siete interessati! Ottenere il massimo con l'operatore di divisione SQL! In questo articolo abbiamo approfondito molto un concetto specifico, mostrandovi le complessità dell'utilizzo dell'operatore di divisione in SQL per la divisione di interi. Abbiamo imparato a gestire la divisione di interi per ogni DBMS SQL, da SQL Server a MySQL. Abbiamo anche parlato del fastidioso errore "divisione per zero" comune in SQL e abbiamo introdotto risorse che vi permetteranno di gestire questo particolare problema in modo elegante. Come per ogni cosa nella vita, la pratica rende perfetti! Se desiderate rafforzare le vostre competenze in SQL attraverso sfide mensili divertenti e coinvolgenti, prendete in considerazione la Sfida SQL di questo mese. Tags: sql imparare sql division