代码之家  ›  专栏  ›  技术社区  ›  Dean

Oracle sql Count distinct value over partition by?

  •  0
  • Dean  · 技术社区  · 7 年前

    对不起,我很困惑,无法让它工作。

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

    我的意思是:- 我有70个货盘的一个项目,项目A 每个托盘都有一个唯一的tag\u id 大多数时候,手上的这个数量对于很多托盘都是一样的,所以对于我的70个托盘,我有 34个标签,手上的数量为60 6个标签,手上的数量为88 30个标签,手上的数量为80

    我想显示项目编号和标签的最大数量, 以上示例为项目A 34

    但是我需要为仓库里的数千件物品做这个。 我可以做一个简单的 选择i.qty\u on\u hand,count(qty\u on\u hand) 其中i.zone_1='散装商店' 和sku_id='1961834100' 按现有数量分组 但这是针对1件商品(sku\u id),然后这仍然表明,在散装商店中有3种不同数量的库存,因为我只想要每个sku的最高数量。

    我已经看了count distinct partition by etc等等, 但无法使其工作,因此任何工作示例都将非常好。

    希望我没有把你弄糊涂。 提前感谢 院长

    1 回复  |  直到 7 年前
        1
  •  0
  •   mathguy    7 年前

    样本数据,所以我们在讨论同样的事情,会有所帮助。

    假设“项目”由 sku_id ,每个托盘都有一个唯一的 tag_id ,它有一个 sku\u id 和a qty (数量)。这个表叫做 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
    ;