Mysql
 sql >> Base de données >  >> RDS >> Mysql

Groupe de produits cumulés MySQL par

Si vous utilisez MySQL 8, vous pouvez utiliser fonctions de fenêtre pour créer le produit cumulé. Malheureusement, il n'y a pas de PROD() fonction d'agrégation / fenêtre dans n'importe quelle base de données SQL que je connaisse, mais vous pouvez l'émuler en utilisant EXP(SUM(LOG(factor))) :

SELECT
  quote_date,
  security_id,
  tr,
  1000 * (EXP(SUM(LOG(1 + COALESCE(tr, 0)))
    OVER (PARTITION BY security_id ORDER BY quote_date)))
    AS accum_index
FROM stock_prices

dbfiddle ici .