#type diff
#top 2
#huizong top3
with t1 as(
select product_id,product_name,type,price,rank() over (partition by type order by price desc) as rank_info
from product_info pi),
t2 as(select t1.*
from t1
where t1.rank_info = 2 or t1.rank_info = 1),
t3 as(select *,rank() over (order by price desc) as rank_info2
from t2)
select product_id,product_name,type,price
from t3
where rank_info2 <=3
注意区分
1.where会在窗口函数前执行,所以有窗口函数的地方少用where (老生常谈)
2.rownumber,rank,denserank区别



京公网安备 11010502036488号