sql >> Database >  >> RDS >> Mysql

Bereken winst op basis van first-in, first-out prijzen

Goede vraag. De benadering die ik gebruik is om de totale verkoop te berekenen. Bereken vervolgens de cumulatieve aankopen en combineer ze met speciale logica om de juiste rekenkunde voor de combinatie te krijgen:

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

Opmerking:ik heb deze query niet getest, dus er kunnen syntaxisfouten in voorkomen.



  1. ADODFCMP-hulpprogramma

  2. MySQL INT betekenis

  3. WAAR versus HEBBEN

  4. LINQ voor Java-tool