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

Oracle sql Count distinct value over partition by?

抱歉,我很困惑,无法正常工作。

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

我的意思是:- 我有 70 个托盘的物品,物品 A 每个托盘都有一个独特的 tag_id 每个 tag_id 都有数量 (qty_on_hand) 大多数时候,这个 qty_on_hand 对于很多托盘都是一样的,所以对于我的 70 个托盘,我有 qty_on_hand 为 60 的 34 个标签 qty_on_hand 为 88 的 6 个标签 qty_on_hand 为 80

的 30 个标签

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

但我需要为仓库中的数千件物品执行此操作。 我可以做一个简单的 select i.qty_on_hand,计数(qty_on_hand) 来自存货 i 其中 i.zone_1 = 'BULKSTORE' 和 sku_id = '1961834100' 按 qty_on_hand 分组 但它是针对 1 件商品 (sku_id) 的,然后这仍然告诉我在散装商店区域有 3 种不同的 quantities_on_hand 因为我只想要每个 sku 的最高价。

我看过 count distinct partition by etc, etc, 但无法让它工作,所以任何工作示例都会很棒。

希望我没有把你搞糊涂了。 提前致谢 院长

示例数据,所以我们在谈论同一件事,会有所帮助。

假设"item"被sku_id识别,每个托盘都有一个唯一的tag_id,它有一个sku_id和一个qty(数量) .而 table 被称为 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
;

会给你你所需要的。