Oracle sql计算分区上的不同值?
Posted
技术标签:
【中文标题】Oracle sql计算分区上的不同值?【英文标题】:Oracle sql Count distinct value over partition by? 【发布时间】:2017-10-12 20:19:54 【问题描述】:抱歉,我很困惑,无法让它工作。
我想为每个项目显示最大数量的相同值,
我的意思是:- 我有 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
我想显示商品编号和标签的最高编号, 上面的例子是 Item A 34
但我需要为仓库中的数千件物品执行此操作。 我可以做一个简单的 选择 i.qty_on_hand,count(qty_on_hand) 从库存 i 其中 i.zone_1 = 'BULKSTORE' 和 sku_id = '1961834100' 按 qty_on_hand 分组 但它是针对 1 件商品 (sku_id) 的,然后这仍然向我表明,在散装商店区域中有 3 个不同的数量_on_hand,我只希望每个 sku 的数量最高。
我查看了按等计算不同的分区,等等, 但无法让它工作,所以任何工作示例都会很棒。
希望我没有让你太困惑。 提前致谢 院长
【问题讨论】:
zone
与问题有什么关系?那么:count distinct 不太可能有帮助;你想算等于,这是一个不同的概念。
【参考方案1】:
样本数据,所以我们谈论的是同一件事,会有所帮助。
假设“item”由sku_id
标识,每个托盘都有一个唯一的tag_id
,它有一个sku_id
和一个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
;
会给你你需要的。
【讨论】:
以上是关于Oracle sql计算分区上的不同值?的主要内容,如果未能解决你的问题,请参考以下文章
Oracle SQL - 过滤掉包含具有特定值的行的分区或行组