back to top

SQL: Calcolare la media dei valori di più campi

Attraverso una semplice query SQL è possibile calcolare dinamicamente il valore medio di diversi campi numerici.

Attenzione: non sto parlando della media dei valori di un singolo campo – nel qual caso è sufficiente utilizzare la funzione AVG() – ma della media dei valori di una molteplicità di campi di un dato record. Questa operazione risulta particolarmente utile quando si desidera ottenere una visione d’insieme delle performance di diverse metriche associate allo stesso record.

Pubblicità

Vediamo di seguito la query per il calcolo della media di diversi campi, in cui i record sono ordinati in base al valore di tale media:

SELECT id, v1, v2, v3,
(v1 + v2 + v3) AS totale,
((v1 + v2 + v3) / 3) AS valore_medio
FROM tbl ORDER BY valore_medio DESC;

L’istruzione proposta si basa sulla creazione di due campi alias: “totale”, che conterrà il risultato della somma di tre campi, e “valore_medio” che conterrà la media ottenuta sommando i valori estratti. In pratica, la media viene calcolata tramite una semplice operazione matematica – la media aritmetica di due o più numeri è la somma dei valori numerici divisa per il numero di valori numerici considerati.

Un aspetto importante da considerare durante il calcolo della media è la gestione dei valori nulli. Se uno dei campi utilizzati per il calcolo della media contiene un valore nullo, il risultato finale potrebbe essere influenzato. Per evitare questo, possiamo utilizzare una condizione per considerare solo i valori non nulli. Ecco un esempio di come gestire i valori nulli:

SELECT id, v1, v2, v3,
(v1 + v2 + v3) AS totale,
((COALESCE(v1, 0) + COALESCE(v2, 0) + COALESCE(v3, 0)) / 
(NULLIF((CASE WHEN v1 IS NOT NULL THEN 1 ELSE 0 END) + 
          (CASE WHEN v2 IS NOT NULL THEN 1 ELSE 0 END) + 
          (CASE WHEN v3 IS NOT NULL THEN 1 ELSE 0 END), 0)) AS valore_medio
FROM tbl ORDER BY valore_medio DESC;

In questo esempio, utilizziamo COALESCE() per sostituire i valori nulli con zero e NULLIF() per evitare la divisione per zero. In questo modo, siamo certi che il calcolo della media rimanga accurato, evitando risultati inattesi.

Infine, sarebbe utile considerare casi d’uso più complessi, come ad esempio calcolare la media di campi provenienti da più tabelle. Utilizzando le JOIN, possiamo aggregare dati provenienti da fonti diverse e calcolare la media di campi specifici. Ecco un esempio:

SELECT a.id, a.v1, b.v2, a.v3,
(a.v1 + b.v2 + a.v3) AS totale,
((COALESCE(a.v1, 0) + COALESCE(b.v2, 0) + COALESCE(a.v3, 0)) / 
(NULLIF((CASE WHEN a.v1 IS NOT NULL THEN 1 ELSE 0 END) + 
          (CASE WHEN b.v2 IS NOT NULL THEN 1 ELSE 0 END) + 
          (CASE WHEN a.v3 IS NOT NULL THEN 1 ELSE 0 END), 0))) AS valore_medio
FROM tbl_a a
JOIN tbl_b b ON a.id = b.foreign_id
ORDER BY valore_medio DESC;

In questo modo, riusciamo a calcolare la media sia dei valori interni alla prima tabella che di quelli importati dalla seconda, ottimizzando ulteriormente l’analisi dei dati.

Altri contenuti interessanti

Pubblicità

Potrebbero interessarti queste guide

Claudio Garau
Claudio Garau
Web developer, programmatore, Database Administrator, Linux Admin, docente e copywriter specializzato in contenuti sulle tecnologie orientate a Web, mobile, Cybersecurity e Digital Marketing per sviluppatori, PA e imprese.

Leggi anche...

Come ottenere l’ID dell’ultimo record inserito in MySQL, PostgreSQL, SQL Server e Oracle?

Ottenere l'ID dell'ultimo record inserito in una tabella, dopo...

Database completo regioni, province e comuni italiani (in formato SQL)

Quando si sviluppa un sito web o un'applicazione in...

File CSV: cosa sono, come si aprono e come crearli

In questo articolo cercheremo di capire cos'è il formato...

Confrontare due tabelle e trovare i record senza corrispondenza

all'interno di un database relazionale può essere utile poter...

Eseguire comandi SQL online con SQL Fiddle

Sì. E' possibile testare codice SQL senza aver installato...

MySQL: modificare il valore di AUTO_INCREMENT

MySQL è uno dei sistemi di gestione di basi...
Pubblicità