oracle的partition,Oracle 之Partition By 函数的使用

原标题:Oracle 之Partition By 函数的使用

Begin:

现在许多系统对页面的显示效果有很高的标准,系统做的丑客户爸爸不买单。当然系统做的美不美是前端的锅,和我们关系不是很大,我们只需把前端所需要的数据传给他们就行了,这些是题外话。

de4585a958d2cd4ebecb4a83cb17eed9.png

图1.系统排名图

进入正题,使用 Partition By XX列 Order By XX列 进行实现分组排序,还是使用我们万能的Person表。。。这次我们用age字段,重名的人员年龄不一样。

5c91ad5f1291aed54bca1b4f2af8f987.png

图2. Person表

我们对年龄Age字段进行排名,并且加上排名列。需要使用Rank() Over(想要排名的列) 语句。如下图:

43e705884d03c7a06347fffac9d0880f.png

图3 。使用Order By加上排名列

从上面的结果可见,所有人员以Age进行了排序,只有一个第一。那么我们现在想要对相同名称的人员进行一个年龄排名(每个名称中都要有一个第一),怎样实现呢。这时候就需要我们的Partition By Order By 语句。使用方法见下图:

64f61de25c274214c3ae8922823842d8.png

从查询结果中我们可以推出来,使用Partition By Oracle 帮我们对相同名称的人员进行了分割(Partition的意思就是分割),然后又根据Order By对分割后的结果集进行了排序!

现在我们得到了想要的结果,图一就是通过Partition By 实现的,相同类型的数据都要有一个排名。

写在最后,好多新人都觉得SQL语句好复杂,不会写!其实我们只要做到以下几步就可完成业务需求:

第一步、理清楚表结构,搞清楚表与表怎么关联的,非常重要!

第二步、找出业务所需的主数据表

第三步、无非就是左连接、内连接、分组、排序

刚开始谁也不会超级复杂的SQL,我们只需要一层一层的查询出我们想要的结果,在这基础上再进行查询。还有,对于SQL优化,我觉得还是有必要做的,因为数据到达几千万的时候,索引都救不了“慢SQL”,但是优化是在功能实现的基础上来做的,so 实现业务查询第一,优化慢慢去琢磨!

责任编辑:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值