在一段时间内获得平均库存超过几个静态库存值的最快方法

时间:2014-07-29 09:20:30

标签: sql performance sql-server-2008 tsql

我们有一张表可以跟踪每件产品每天的静态库存值。只有在更改库存时,才会向表中添加新记录。因此,每个日期都没有每个产品的记录。

简而言之,有3列很重要:

  1. ProductId
  2. 日期
  3. 库存
  4. 对于100,000件产品来说,确定平均库存的速度相当慢。我们尝试了几种解决方案和一些CTE,但我想知道是否有其他聪明的方法我还不知道确定平均库存。

    一种产品的数据示例:

    id date stock 5 2012/01/07 3 5 2013/04/04 2 5 2013/05/15 1 5 2013/08/07 12 5 2014/06/02 11

    现在我在2013年1月1日至2013年12月31日期间运行统计数据。在这段时间内确定平均库存的最快方法是什么?

    我真的希望有一些我不知道的聪明的东西..; - )

1 个答案:

答案 0 :(得分:0)

您可以使用JOIN将自己的查询加入,其中右侧的行是左侧行之后的下一次更新:

id    date          stock   prev_date     prev_stock
5     2012/01/07    3    
5     2013/04/04    2       2012/01/07    3
5     2013/05/15    1       2013/04/04    2
5     2013/08/07    12      2013/05/15    1
5     2014/06/02    11      2013/08/07    12

现在您可以计算每行的时差,从中可以计算加权平均值。