请问这句oracle sql语句是什么意思

来源:百度知道 编辑:UC知道 时间:2024/06/23 16:29:16
select * from (select tb_order.*,rank() over (partition by customer_id order by order_no asc) as rn from tb_order)where rn<=5
这句sql是查询出各个用户的前5个订单,请高手帮忙解释一下这句sql的执行步骤或者说原理,特别是rank(),over,partition等我不懂,谢谢各位了,小弟刚接触oracle,见笑了
tb_order表结构order_no,customer_id,create_date...

这是Oracle的数据分析语法
表示先以customer_id分组,再按order_no排序,rank()是给排序的结果定等级

最后rn<=5是只要前5行

如果每个用户有千万行订货单,他先要取出所有订单,虽然你只要前5个。

rank() over --用法oracle与MS_SQL2005的是相同的

以customer_id分组,按order_no顺序排号

如:
Customer_ID
1
1
2
时rn显示
1
1
3