2017-10-12 10 views
0

미안하지만 혼란스럽고 작동하지 않습니다.Oracle sql 파티션을 통해 고유 값을 계산 하시겠습니까?

내가 각 항목에 대해 동일한 값입니다 값의 가장 높은 양을 보여주고 싶은이,

내가 의미하는 것은 : - 내가 항목의 70 개 팔레트를, 항목 A 각각의 팔레트는 고유 tag_id있다 각 tag_id에는 수량이 있습니다 (qty_on_hand) 대다수의 팔레트에서이 qty_on_hand는 동일합니다. 따라서 내 팔레트는 입니다. qty_on_hand of 60 34 개의 태그와 88 개의 qty_on_hand qty_on_hand가 80 인 30 개의 태그

아이템 번호와 가장 많은 수의 태그를 보여주고 싶습니다. 위의 예는 Item A가됩니다. 34

하지만웨어 하우스에있는 수천 개의 항목에 대해이 작업을 수행해야합니다. 내가 인벤토리에서 (qty_on_hand) 을, 간단한 선택 i.qty_on_hand을 셀 수 내가 곳 i.zone_1 = 'BULKSTORE' 및 sku_id = '1961834100' 그룹 qty_on_hand 에 의해하지만 1 개 항목 (sku_id)을 위해 그리고 그럼에도 불구하고 이것은 여전히 ​​3 개의 다른 수량이 있음을 나에게 보여줍니다. 대량 상점에서 나는 오직 각 sku에 대해 가장 높은 것을 원합니다.

등등, 등등으로 개수가 다른 파티션을 보았지만 어떤 작업 예제도 훌륭하게 작동 할 수 없었습니다.

나는 너를 너무 많이 혼동하지 않았기를 바랍니다. 미리 감사드립니다. 딘

+0

'zone'은 문제와 어떤 관련이 있습니까? 그렇다면 : count ** distinct **는 도움이되지 않을 것입니다; 당신은 다른 개념 인 ** 평등 **을 계산하려고합니다. – mathguy

답변

0

샘플 데이터, 그래서 우리는 똑같은 말을하고 있습니다.

"item"이 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 
; 

같은 당신이 필요로하는 무엇을 제공 할 것입니다.