Non c'è alcuna funzione PRODUCT
insieme nello standard SQL. Sembrerebbe essere un candidato degno, tuttavia (a differenza, per esempio, di una funzione set CONCATENATE
: non è adatto per SQL, ad esempio il tipo di dati risultante coinvolgerebbe multivaleri e pone un problema per quanto riguarda la prima forma normale).
SQL standard mirano a consolidare la funzionalità attraverso i prodotti SQL circa 1990 e per fornire 'leadership di pensiero' per lo sviluppo futuro. In breve, documentano cosa fa SQL e cosa dovrebbe fare SQL. L'assenza della funzione set PRODUCT
suggerisce che nel 1990 nessun venditore fosse degno di inclusione e non ci fosse stato alcun interesse accademico a introdurlo nello Standard.
Naturalmente, i venditori sempre hanno cercato di aggiungere la propria funzionalità, in questi giorni di solito come estensioni a standard piuttosto che tangentally. Non ricordo di aver visto una funzione set PRODUCT
(o anche una richiesta per uno) in uno qualsiasi dei prodotti SQL che ho usato.
In ogni caso, il lavoro è abbastanza semplice utilizzando le funzioni scalari log
e exp
(e la logica per gestire i negativi) con la funzione set SUM
; vedi la risposta di @ gbn per qualche codice di esempio. Non ho mai avuto bisogno di farlo in un'applicazione aziendale, però.
In conclusione, la mia ipotesi migliore è che non vi è alcuna richiesta da parte degli utenti finali SQL per una funzione set PRODUCT
; inoltre, chiunque abbia un interesse accademico probabilmente troverà la soluzione accettabile (vale a dire non darebbe valore allo zucchero sintattico fornito da una funzione set PRODUCT
).
Fuori di interesse, v'è infatti richiesta in SQL Server terreni per le nuove funzioni impostate ma per quelli della funzione finestra varietà (e SQL standard, anche). Per maggiori dettagli, incluso come essere coinvolti in ulteriori richieste di guida, vedere Itzik Ben-Gan's blog.
Immagino che sia molto più raro voler calcolare il prodotto su una serie di numeri rispetto a una somma. Anche nel tuo esempio, quanto spesso desideri calcolare il prodotto di un insieme di prezzi? –
Qual è il valore del prodotto (table.price) che si suppone risponda? Leggendo la "funzione di aggregazione del prodotto", ho capito che è necessario restituire il prodotto di tutti i valori table.price trovati nel set di risultati: Row1.Price * Row2.Price * ... * RowN.Price. Ma per la vita di me, non riesco a capire cosa significhi "quel valore", quali informazioni dovrebbe trasmettere? Qual è l'applicazione pratica di questo, per i prezzi o qualsiasi altro tipo di valore? Per favore, illuminami. –
per il mio caso non è in realtà per i prezzi, ma per ottenere un prodotto di rendimento (qty_out/qty_in). – lock