sql >> データベース >  >> RDS >> Mysql

先入れ先出し価格に基づいて利益を計算する

    良い質問。私が取っているアプローチは、総売上高を計算することです。次に、累積購入額を計算し、それらを特別なロジックと組み合わせて、組み合わせに適した計算を行います。

    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
    

    注:このクエリはテストしていないため、構文エラーが発生する可能性があります。



    1. Visual Studio:ContextSwitchDeadlock

    2. 何が良いですか-多くの小さなテーブルまたは1つの大きなテーブル?

    3. @@SERVERNAMEを使用してSQLServerのローカルサーバー名を返します

    4. MySQLに接続する安全なPHPクラス?