赞
踩
原标题:Oracle 之Partition By 函数的使用
Begin:
现在许多系统对页面的显示效果有很高的标准,系统做的丑客户爸爸不买单。当然系统做的美不美是前端的锅,和我们关系不是很大,我们只需把前端所需要的数据传给他们就行了,这些是题外话。
图1.系统排名图
进入正题,使用 Partition By XX列 Order By XX列 进行实现分组排序,还是使用我们万能的Person表。。。这次我们用age字段,重名的人员年龄不一样。
图2. Person表
我们对年龄Age字段进行排名,并且加上排名列。需要使用Rank() Over(想要排名的列) 语句。如下图:
图3 。使用Order By加上排名列
从上面的结果可见,所有人员以Age进行了排序,只有一个第一。那么我们现在想要对相同名称的人员进行一个年龄排名(每个名称中都要有一个第一),怎样实现呢。这时候就需要我们的Partition By Order By 语句。使用方法见下图:
从查询结果中我们可以推出来,使用Partition By Oracle 帮我们对相同名称的人员进行了分割(Partition的意思就是分割),然后又根据Order By对分割后的结果集进行了排序!
现在我们得到了想要的结果,图一就是通过Partition By 实现的,相同类型的数据都要有一个排名。
写在最后,好多新人都觉得SQL语句好复杂,不会写!其实我们只要做到以下几步就可完成业务需求:
第一步、理清楚表结构,搞清楚表与表怎么关联的,非常重要!
第二步、找出业务所需的主数据表
第三步、无非就是左连接、内连接、分组、排序
刚开始谁也不会超级复杂的SQL,我们只需要一层一层的查询出我们想要的结果,在这基础上再进行查询。还有,对于SQL优化,我觉得还是有必要做的,因为数据到达几千万的时候,索引都救不了“慢SQL”,但是优化是在功能实现的基础上来做的,so 实现业务查询第一,优化慢慢去琢磨!
责任编辑:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。