[非技术]工作记录_1

   

       情景:销售一笔插入一条记录,状态为有效,退机则把销售记录置为失效,在退机记录表新增一笔退机的记录,统计销售量和库存的时候一开始是这样计算的:
    

销售量:select count(*) from 销售记录表 where 状态=有效
退机数:select count(*) from 退机记录表 where 退机=true
库存=开始库存-销售+退机

       有这样一种情况

        用户换机,新增一条退机记录,旧的销售记录置为失效,再添加一条新的销售记录,此时再用上面的sql则有问题。如一开始有2台手机,卖出去一台,销售表新增一条记录,用户又退了,给用户另外一台,则销售表有2条记录,含一条失效的记录,退机记录表也有一条记录,上述销售换机操作发生在同一天内。

   

       上面的sql统计出来,销售数量为1 ,退机数为1,库存为开始2-销售1+退机1=2,实际库存为1。 

       实际得这么算,库存为开始2-销售1+退机1-销售退机换机再销售(同一天换机数)1=退机1

       当初想的太简单了

       全文完

猜你喜欢

转载自53873039oycg.iteye.com/blog/2092931