Il grande Giorgio Rancati, su microsoft.public.it.sql, alla richiesta di come eseguire una produttoria [il prodotto dei termini di un'aggregazione] ha spiazzato il newsgroup con:
Select EXP(SUM(LOG(Campo))) from Tabella
Oltre ad avere un'eleganza meravigliosa la formula ha il grande pregio di mantenere piccoli i termini in sommatoria evitando rischi di overflow e apre scenari per sommatorie anche estese a molti valori, per esempio:
Select SUM(LOG(Campo)) from Tabella
genera un termine contenuto che al limite può diventare esponente di
e lato client [con strumenti adatti] per generare produttorie che vadano anche oltre le capacità del bigint.
Se non bastasse, Giorgio non si ferma lì e aggiunge:
"Se devi fare la media geometrica:"
Select EXP(AVG(LOG(Campo))) from Tabella
Introducendo con nonchalance un termine 1/N che diventerà alla fine la radice ennesima.
Molti molti molti complimenti a Giorgio.