Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Hitung Laba Berdasarkan Harga First-In, First-Out

Pertanyaan bagus. Pendekatan yang saya lakukan adalah menghitung total penjualan. Kemudian hitung pembelian kumulatif, dan gabungkan dengan logika khusus untuk mendapatkan aritmatika yang tepat untuk kombinasi tersebut:

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

Catatan:Saya belum menguji kueri ini sehingga mungkin ada kesalahan sintaksis.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mengambil hasil dari baris MySQL dengan beberapa kolom dengan nama yang sama dengan PHP?

  2. Hibernate Simpan perilaku aneh

  3. kesalahan instalasi mysqlclient di AWS Elastic Beanstalk

  4. Bagaimana cara mengetahui apakah saat menggunakan pembaruan kunci duplikat, baris dimasukkan atau diperbarui?

  5. Mengubah tahun di tanggal mysql