sql >> Database >  >> RDS >> Sqlserver

Eeuwigdurende gewogen gemiddelde kosten Berekening SQL Server 2008

Als ik het goed begrijp, wil je de cumulatieve gemiddelde prijs.

Deze benadering maakt gebruik van subquery's om de cumulatieve totale hoeveelheid en het cumulatieve totaal betaalde te berekenen. De verhouding is de gemiddelde kosten:

select t.*, cumepaid / cumeqty as avg_cost
from (select t.*,
             (select SUM(qty) from t t2 where t2.item_id = t.item_id and t2.purch_id <= t.purch_id
             ) as cumeqty,
             (select SUM(qty*unit_price) from t t2 where t2.item_id = t.item_id and t2.purch_id <= t.purch_id
             ) as cumepaid
      from t
     ) t

In SQL Server 2012 kunt u dit doen door direct cumulatieve sommen te berekenen (moet efficiënter zijn). Je zou dit ook kunnen doen met cross apply , maar ik geef de voorkeur aan standaard SQL.




  1. Java Spring JPA Paginering Werkt niet als er meer dan één pagina is

  2. SQL:Groepsaantallen in afzonderlijke resultaatrijen

  3. Alle dubbele rijen weergeven

  4. Hoe voer ik veel SQL-query's uit als transacties?