对大家有意思的问题。这是我的数据集的一个示例(见下文)。我有仓库,日期和给定仓库在特定日期的库存级别的 更改 。
例如:假设1/1/2018是第一个日期,则仓库1开始时的库存为100,然后是600,然后是300,然后是500 ...等等。
我想在SQL中回答我的问题:根据仓库ID,每个仓库是否有超过750个库存(是/否)?
我无法汇总整列,因为期末库存(每个仓库的列总和)可能低于过去的库存水平。任何帮助表示赞赏!
+--------------+------------+---------------+
| Warehouse_id | Date | Inventory_Amt |
+--------------+------------+---------------+
| 1 | 1/1/2018 | +100 |
| 1 | 6/1/2018 | +500 |
| 1 | 6/15/2018 | -300 |
| 1 | 7/1/2018 | +200 |
| 1 | 8/1/2018 | -400 |
| 1 | 12/15/2018 | +100 |
| 2 | 1/1/2018 | +10 |
| 2 | 6/1/2018 | +50 |
| 2 | 6/15/2018 | -30 |
| 2 | 7/1/2018 | +20 |
| 2 | 8/1/2018 | -40 |
| 2 | 12/15/2018 | +10 |
| 3 | 1/1/2018 | +100 |
| 3 | 6/1/2018 | +500 |
| 4 | 6/15/2018 | +300 |
| 4 | 7/1/2018 | +200 |
| 4 | 8/1/2018 | -400 |
| 4 | 12/15/2018 | +100 |
+--------------+------------+---------------+
答案 0 :(得分:4)
您想要一个累加和然后过滤:
select i.*
from (select i.*, sum(inventory_amt) over (partition by warehouse_id order by date) as inventory
from inventory i
) i
where inventory_amt > 750