1.使用row_number:
row_number() over (...)
2.以商品類為準:
partition by 商品類
3.照著業績"倒序排序" :
order by 業績 desc
4.對子查詢做where篩選,篩選出前三名的
where 排名 <= 3;
with Temp_Table as (
select '鞋' 商品類,'Nike' 商品 , 1234000 業績 from dual
union all select '鞋' 商品類,'愛迪達' 商品 , 132200 業績 from dual
union all select '鞋' 商品類,'雜牌' 商品 , 223400 業績 from dual
union all select '鞋' 商品類,'PUMA' 商品 , 43532 業績 from dual
union all select '手機' 商品類,'HTC' 商品 , 32423 業績 from dual
union all select '手機' 商品類,'IPHONE' 商品 , 423 業績 from dual
union all select '手機' 商品類,'三星' 商品 , 23413 業績 from dual
union all select '手機' 商品類,'NOKIA' 商品 , 14344 業績 from dual
)
select 商品類,商品,業績,排名 from (
select T100.*
,row_number() over (partition by 商品類 order by 業績 desc ) 排名 --藉由row_number
from Temp_table T100
)where 排名 <= 3;