Oracle sql在分区上计算不同的值?

时间:2017-10-12 20:19:55

标签: sql oracle count distinct window-functions

很抱歉,但我很困惑,无法让它发挥作用。

我想显示每个项目具有相同值的最大数量的值

我的意思是: - 我有一个项目的70个托盘,项目A. 每个托盘都有一个唯一的tag_id 每个tag_id都有一个数量(qty_on_hand) 大部分时间这个qty_on_hand对于很多托盘是相同的,所以对于我的70个托盘我有 34个标签,qty_on_hand为60 6个标签,qty_on_hand为88 30个标签,qty_on_hand为80

我想显示商品编号和最高数量的标签, 上面的例子是项目A 34

但我需要为仓库中的数千件物品做这件事。 我可以做一个简单的事情 选择i.qty_on_hand,count(qty_on_hand) 从库存我 其中i.zone_1 ='BULKSTORE' 和sku_id ='1961834100' 按qty_on_hand分组 但它是1个项目(sku_id),然后这仍然显示我在批量商店中有3个不同的quantity_on_hand,我只希望每个sku最高。

我看过计数明显的分区等等,  但是没能使它工作,所以任何工作的例子都会很棒。

希望我没有太多困惑你。 提前致谢 迪安

1 个答案:

答案 0 :(得分:0)

示例数据,所以我们谈论同样的事情,会有所帮助。

假设"项目"由sku_id标识,每个托盘都有一个唯一的tag_id,它有sku_idqty(数量)。该表名为t

然后像

select sku_id, qty
from   ( 
         select   sku_id, qty,
                  dense_rank() over (partition by sku_id order by count(*) desc) as drk
         from     t
         group by sku_id, qty
       )
where  drk = 1
;

会为您提供所需的信息。