sql >> Database teknologi >  >> RDS >> Mysql

Beregn fortjeneste baseret på First-In, First-Out-priser

Godt spørgsmål. Den tilgang, jeg tager, er at beregne det samlede salg. Beregn derefter kumulative køb, og kombiner dem med speciel logik for at få den rigtige aritmetik for kombinationen:

select s.sku, (MarginPos - SUM(case when s.totalqty < p.cumeqty - p.qty then p.price * p.qty when s.totalqty between p.cumeqty - p.qty and p.qty then s.price * (s.totalqty - (p.cumeqty - p.qty)) else 0 end) ) as Margin from (select s.sku, SUM(price*qty) as MarginPos, SUM(qty) as totalqty from sales s ) s left outer join (select p.*, (select SUM(p.qty) from purchase p2 where p2.sku = p.sku and p2.sale_id <= p.sale_id ) as cumeqty from purchase s ) on s.sku = p.sku group by s.sku, MarginPos

Bemærk:Jeg har ikke testet denne forespørgsel, så den kan have syntaksfejl.



  1. Tilføjelse af flere datalagre til Microsoft Power BI

  2. Eksporter MySQL til CSV, nogle kolonner med anførselstegn og nogle uden

  3. Deaktivering af fremmednøglekontrol på kommandolinjen

  4. Introduktion til SQL Server