Redshift / SQL查询可根据列值进行算术运算-从具有多个组的两个数据点中按库存获取销售量

我在Amazon Redshift中有一个名为“库存”的表

这是从外部系统提取的数据。每天两次,一次是早晨(在开业时),一次是在关闭后发生。这些是下面的location_id列(有多个位置)。

我想根据“ total_inventory”列找出已售出的物品总数。

有一列“ import_time”,其中有两个可能的值:“ am”和“ pm”。

所有这些都应按日期完成,称为“ import_date”

数据可能看起来像这样:

item_id | location_id | total_inventory | import_date | import_time
-------------------------------------------------------------------
10123   | 3           | 10              | 2019-10-01  | am
10123   | 3           | 3               | 2019-10-01  | pm
10123   | 3           | 7               | 2019-10-02  | am
10123   | 3           | 6               | 2019-10-02  | pm

理想情况下,我希望能够看到total_sold的结果,例如:

item_id | location_id | total_sold | import_date
------------------------------------------------
10123   | 3           | 7          | 2019-10-01
10123   | 3           | 1          | 2019-10-02

注意:每日开始水平与以前的库存水平无关,因为它们是在夜间补充的。

还请注意:我已经继承了这个问题,如果需要进行结构上的更改,我可以这样做,但是如果可以避免的话会有所帮助。

我试图查看其他根据列值进行算术运算的答案,但是我没有看到(或者更确切地说,是理解)适合我的答案。

完全透明:由于长时间不使用我的SQL技能,所以最近我的SQL技能相当薄弱,所以如果我问了一个愚蠢的问题,请对我轻松一点。

likunok 回答:Redshift / SQL查询可根据列值进行算术运算-从具有多个组的两个数据点中按库存获取销售量

如果pm值始终小于am,则可以执行以下操作:

301

但是,我怀疑您真的想要条件聚合:

select import_date,item_id,location_id,max(total_inventory) - min(total_inventory)
from t
group by import_date,location_id;
本文链接:https://www.f2er.com/3164531.html

大家都在问