Livello di difficoltà: |
|
MySQL è il database open source per eccellenza. Cresciuto molto in questi anni, è diventato il DBMS più utilizzato dalla comunità open source e apprezzato anche da chi scrive pagine con tecnologie diverse da PHP e su server diversi da Linux.
|
| |
Operatori matematici
MySQL
Con MySQL è possibile eseguire delle query utilizzando all'interno della sintassi SQL degli operatori matematici, che sono i classici della somma, sottrazione, moltiplicazione e divisione.
Somma
Possiamo sommare due o più campi per ottenere un nuovo campo, ad esempio:
SELECT (primoCampo + secondoCampo) AS totale FROM nomeTabella;
In questo modo, avremo una colonna di nome "totale" in cui saranno contenute tutte le somme dei due campi.
Differenza
Come per la somma, possiamo fare:
SELECT (primoCampo - secondoCampo) AS differenza FROM nomeTabella;
Moltiplicazione
All'interno delle query è possibile anche moltiplicare i valori di più campi, ad esempio:
SELECT (primoCampo * secondoCampo) AS risultato FROM nomeTabella;
Divisione
E ancora, per la divisione, possiamo usare:
SELECT (primoCampo / secondoCampo) AS risultato FROM nomeTabella;
Elevazione a potenza
L'elevazione a potenza con MySQL si può ottenere usando due funzioni: POW(x,y) o POWER(x,y), dove x rappresenta la base della potenza e y l'esponente. Ecco un esempio:
SELECT POW(10,3);
Restituisce: 1000.000000
Radice quadrata
La radice quadrata non negativa di un numero si ottiene con:
SELECT SQRT(9);
E restituisce: 3.000000
Casi pratici
Gli operatori matematici possono essere molto comodi anche per ordinare dei risultati. Ammettiamo di avere una tabella che contenga i voti totali assegnati a un articolo e il numero di persone che hanno votato. Per ordinare i records così da ottenere gli articoli più apprezzati, faremo:
SELECT id,titolo FROM articoli ORDER BY (voti_totali / numero_voti) DESC;
Per migliorare la query e avere sottomano anche la media dei voti di ogni articolo, possiamo crearci un campo provvisorio con il comando AS, ecco come:
SELECT (voti_totali / numero_voti) AS mediaVoto, id, titolo FROM articoli ORDER BY mediaVoto DESC;
|