我有一个SQL表格,看起来像下面的屏幕截图,我正在尝试计算StockLevel列小于或等于0的小时数或天数。
我尝试从大于0的时间中减去小于等于0的时间,然后一直SUM
,但我一直无法做到。
我希望能够通过减去时间戳来添加一个项目少于0的月份的总时数。
DATE_DIFF((CURRENT_DATE),MAX(DATE(ledger.EventTimeStamp)),DAY) AS Days_OutOfStock,
谢谢!
您可以使用LAG函数查找每个期间的库存水平:
SELECT ItemID,StockLevel,EventTimeStamp AS lo,LEAD(EventTimeStamp,1) OVER (PARTITION BY itemId ORDER BY EventTimeStamp) AS hi
那应该给你:
ItemID StockLevel lo hi
536 205 2019-11-05 10:01 null
536 206 2019-11-05 09:37 2019-11-05 10:01
然后您可以使用该输出查找负库存水平和时间量
SELECT ItemId,DATEDIFF(HOUR,hi,lo) AS p
FROM (
SELECT ItemID,1) OVER (PARTITION BY itemId ORDER BY EventTimeStamp) AS hi
)
WHERE StockLevel < 0
您应该能够通过ItemID按月总计小时数