当前位置:   article > 正文

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

oracle partition by order 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 实现业务查询第一,优化慢慢去琢磨!

责任编辑:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/241062?site
推荐阅读
相关标签
  

闽ICP备14008679号