Devi settare a 0 i campi per i quali non vengono acquistate matite.
Gli if servono per verificare se almeno una matita di ciascun colore è stata venduta.
Quindi il totale viene diviso per 1, per 2 o per 3 a seconda di quanti colori diversi sono presenti nell'acquisto.
codice:
select acquirente,sum(rosse) as tot_rosse,sum(verdi) as tot_verdi,sum(blu) as tot_blu,
sum(rosse) + sum(verdi) + sum(blu) as totale,
(sum(rosse) + sum(verdi) + sum(blu) ) /
(
(if (sum(rosse) <> 0,1,0)) +
(if (sum(verdi) <> 0,1,0)) +
(if (sum(blu) <> 0,1,0))
) as media
from acquisti
group by acquirente
order by media desc
Il campo totale è un campo calcolato. Lo devi togliere dalla struttura della tua tabella e lo calcoli quando vuoi tramite query come ho fatto nella query qui sopra.