当前位置:首页 > 日记 > 正文

的Oracle开发的分析功能(等级,dense_rank,row_number)

的Oracle开发的分析功能(等级,dense_rank,row_number)
首先,使用rownum记录排序:

在以前的导言中,介绍了由Oracle开发的解析函数,我们认识到解析函数的基本应用。现在让我们考虑以下问题。

(1)根据订单总数对所有客户进行排序

按地区和客户订单排序

找出总订单的前13名客户

找出最高和最低订单的客户

找出总订单的前25%名客户

根据前一篇文章的思路,我们只能对每组数据进行统计。如果我们需要等级,那么我们只需要添加行号,如果事实是如此简单,让我们来实践它。

(1)测试环境:
复制代码代码如下:SQL> DESC user_order;
名称零式

-----------------------------------------------------------------------------

region_id号(2)

customer_id号(2)

customer_sales数

(2)测试数据:
复制代码代码如下:SQL >选择*从user_order顺序customer_sales;

region_id customer_id customer_sales

= =

五千一百一十五万一千一百六十二

十亿二千九百九十万三千三百八十三

六千七百九十七万一千五百八十五

十亿二千八百九十八万六千九百六十四

九十二亿一千一百零二万零五百四十一

九十二亿二千一百零三万六千一百四十六

八十一亿六千一百零六万八千四百六十七

六亿八千一百一十四万一千六百三十八

五亿三千一百一十六万一千二百八十六

五亿五千一百一十六万九千九百二十六

八十一亿九千一百一十七万四千四百二十一

七十一亿二千一百一十八万二千二百七十五

七十一亿一千一百一十九万零四百二十一

六十一亿零一百一十九万六千七百四十八

六亿九千一百二十万八千九百五十九

一百零三亿零一百二十一万六千八百五十八

五亿二千一百二十二万四千九百九十二

九十二亿四千一百二十二万四千九百九十二

九十二亿三千一百二十二万四千九百九十二

八十一亿八千一百二十五万三千八百四十

七十一亿五千一百二十五万五千五百九十一

七十一亿三千一百三十一万零四百三十四

一百零二亿七千一百三十二万二千七百四十七

八十二亿零一百四十一万三千七百二十二

六亿六千一百七十八万八千八百三十六

一百零二亿六千一百八十万八千九百四十九

五亿四千一百八十七万八千二百七十五

七十一亿四千一百九十二万九千七百七十四

八十一亿七千一百九十四万四千二百八十一

九十二亿五千二百二十三万二千七百零三

选择30行。

请注意,3条记录,订单总额是相同的。如果我们需要屏幕的前12大客户的现在,如果我们使用rownum会发生什么
复制代码如下:SQL >行号,T *

从(选择*)

从user_order

通过customer_sales倒序)T

Where rownum < = 12

通过customer_sales倒序;

region_id customer_id customer_sales ROWNUM

---------------------------------------------

一百九十二亿五千二百二十三万二千七百零三

二百八十一亿七千一百九十四万四千二百八十一

三百七十一亿四千一百九十二万九千七百七十四

四十五亿四千一百八十七万八千二百七十五

五千一百零二亿六千一百八十万八千九百四十九

六十六亿六千一百七十八万八千八百三十六

七百八十二亿零一百四十一万三千七百二十二

八千一百零二亿七千一百三十二万二千七百四十七

九百七十一亿三千一百三十一万零四百三十四

一千零七十一亿五千一百二十五万五千五百九十一

一千一百八十一亿八千一百二十五万三千八百四十

一百二十五亿二千一百二十二万四千九百九十二

选择12行。

很明显,如果你只是把它简单的行号,我们错失了两次其他记录(参考上面的结果)。

两。使用分析功能记录排名:

针对以上情况,Oracle已经从8i分析功能:提供3兰特,dense_rank和row_number解决此类问题。让我们来看看这3种分析函数的功能及其区别。

等级,dense_rank,row_number函数生成一个自然数从1到N的每个记录,和N的值可能小于等于总记录数。这3个函数的唯一区别是排名策略时,相同的数据。

(1)row_number:

的row_number函数返回一个唯一的值,当相同的数据时,排名依次增大的顺序记录。

dense_rank:

的dense_rank函数返回一个唯一的价值,除非同一数据的排名是相同的在这个时候遇到相同的数据。

秩:

秩函数返回一个唯一值。当所有数据相同时,所有相同的数据将同时排列。同时,它将离开最后一个记录和下一个记录之间的等级。

这样的介绍有点难以理解。让我们举例说明它。下面的示例演示了当遇到相同数据时3种不同函数的不同排序策略。
复制代码如下:SQL >选择region_id,customer_id,(customer_sales)总金额,

等级()在(按金额(customer_sales)降序)等级,

dense_rank()结束(以金额(customer_sales)降序)dense_rank,

row_number()结束(以金额(customer_sales)降序)row_number

从user_order

集团通过region_id,customer_id;

region_id customer_id总排名dense_rank row_number

-------------------------------------------------------------
八千一百八十一兆二千五百三十八亿四千零一十一万一千一百一十一

五百二十一兆二千二百四十九亿九千二百一十二万一千二百一十二

九千二百三十一兆二千二百四十九亿九千二百一十二万一千二百一十三

九千二百四十一兆二千二百四十九亿九千二百一十二万一千二百一十四

一万零三百零一兆二千一百六十八亿五千八百一十五万一千三百一十五
选择30行。

请注意上面的绿色和明亮部分,生动地展示了3种不同的排名策略:

(1)对于第一个记录,3个函数都相同:12。

2。当第二相同的记录出现,等级和dense_rank仍然给了同级别的12,而row_number增加13,然后第三个类似的记录。

(3)当排名进入到下一个记录,我们可以看到,秩函数腾出13,14 12和15之间的排名,因为2的排名实际上已经由第二占,第三个相同的记录,dense_rank订单increasing.row_number功能也依次增加

比较以上3种不同的策略,我们必须根据客户的需要来选择。

(1)如果客户只需要指定数量的记录,然后row_number使用最简单,但风险缺少记录

如果客户需要的所有记录,达到一流水平,这是一个很好的选择,采用秩和dense_rank.as为选择哪一个,看客户的需求,选择dense_rank或获得最大的记录

三。分析功能用于记录组的排序。

上面的排名是根据订单的总量排列的,现在和将来:如果是在每个地区的订单总量排序这意味着另一个组操作:记录分组在区域,然后排名。幸运的是,Oracle也提供这样的支持。我们需要做的是在函数命令前面添加分组子句:分区region_id。
复制代码如下:SQL >选择region_id,customer_id,

(customer_sales)总金额,

等级()在(分区region_id)

为了总结(customer_sales)降序)等级,

dense_rank()在(分区region_id)

为了总结(customer_sales)降序)dense_rank,

row_number()在(分区region_id)

为了总结(customer_sales)降序)row_number

从user_order

集团通过region_id,customer_id;

region_id customer_id总排名dense_rank row_number

-------------------------------------------------------------

五千四百一十八亿七千八百二十七万五千一百一十一

五千二百一十二亿二千四百九十九万二千二百二十二

五千五百一十一亿六千九百九十二万六千三百三十三

六千六百一十七亿八千八百八十三万六千一百一十一

六千九百一十二亿零八百九十五万九千二百二十二

六兆一千零一十一亿九千六百七十四万八千三百三十三
选择30行。

我们现在所看到的排序将基于所有区域,而不是所有区域,排列函数中的分区子句的功能是将结果集分成几个部分,以便将置换函数应用到子集上。

5个问题我们已经解决了2以上(1,2),和其余3个问题(顶部/底部,第一/最后,NTile)将在下一个解释。

以上是Oracle的排名,dense_rank,对所有内容的使用row_number功能,希望能给大家一个参考,也希望你有很多的支持。

相关文章

如何在WPS表中插入斜线WPS表教程

如何在WPS表中插入斜线WPS表教程

教程,如何在,电脑软件,WPS,对于WPS表的制作,如何插入表中的斜线来介绍在WPS表单中插入斜杠的方法! 在WPS表中插入斜杠的方法: 打开安装在计算机上的WPS表编辑软件,并创建一个新的空白表单文档; 然后单击行表,选择行,单击鼠标右键单击行,在弹出菜…

为了解决ora-00911的出现:Mybatis无

为了解决ora-00911的出现:Mybatis无

字符,无效,电脑软件,ora,Mybatis,在今天的项目中,当使用MyBatis操作Oracle数据库,它报道ora-00911错误:无效的字符,检查SQL,发现都是写正确,并复制到plsql执行是没有问题的。为什么 注意:这里是错误当您导出查询数据Navicat:ora-00911:无效字符 主…

oracle实现自定义序列号生成的方法

oracle实现自定义序列号生成的方法

自定义,方法,序列号,电脑软件,oracle,在实际工作中,序列号生成问题是不可避免的,下面是一个简单的序列号生成函数。 (1)创建自定义序列号配置表,如下所示: -自定义序列 创建表s_autocode ( PK1 VARCHAR2(32)主键, 使用VARCHAR2(20)不为空, VARCHAR2(10)不…

如何隐藏QQ图标隐藏QQ图标QQ技术

如何隐藏QQ图标隐藏QQ图标QQ技术

图标,技术,电脑软件,QQ,在QQ面板中,我们单击关闭按钮,默认是退出程序。如果我们想把它设为一个隐藏函数,我们如何设置它让我们告诉萧边如何隐藏QQ图标。 隐藏QQ图标的方法 1。首先,打开要修改的帐户(每个帐户的设置应分别修改)。 2,单击主窗口设…

腐烂的城市医生求助

腐烂的城市医生求助

医生,城市,电脑软件,问:最近我在玩一个烂城市。 答:根据你的描述,你应该救医生,不要把楼上的死人杀死了;只要你现在回去杀了他,医生就会自然出现在教堂里。。…

怎么QQ音乐播放双语mvqq常见问题

怎么QQ音乐播放双语mvqq常见问题

常见问题,音乐播放,双语,电脑软件,QQ,当我们使用手机QQ音乐时,我们通常会选择双语MV来获得更好的体验。接下来就让萧边告诉你如何在手机QQ音乐播放双语MV。 利用手机QQ音乐播放双语mv的方法 1)打开手机QQ音乐,点击左上角的放大镜标志,搜索{双…

ps快速选择工具的使用

ps快速选择工具的使用

工具,快速选择,电脑软件,ps,快速选择工具是一个工具,我们经常使用在使用PS过程接下来,小编就给你快速选择工具的使用作了简要介绍,希望能帮助一些初学者。 步 1,首先,我想说的是:快速选择工具主要是用在一些颜色差异大的图片,这有助于我们挖掘出…

使用Excel2003相机

使用Excel2003相机

相机,电脑软件,如果表2部分内容将自动显示在Sheet1,对Excel功能的相机的使用也是一个方法。操作方法如下:首先单击工具菜单,选择自定义;;;;命令,在命令对话框标签;类;选择;;,在右;命令;在发现列表;相机;。并将其拖动到任何位置工具栏。 然后拖动鼠标选择需…

PS的3D工具制作漂亮的立体字

PS的3D工具制作漂亮的立体字

立体字,工具,3D,漂亮,电脑软件,用PS的3D工具制作mdash;mdash;立体文字,对比教程,适合初学者学习,希望大家喜欢! 打开ps并创建画布 画布的大小为35×35,并制作了图案。 钢笔工具使用不好,用的是矩形盒子工具; 建议使用添加到选区;设置样式为固定大…

js实现了关闭当前页面而不弹出提示

js实现了关闭当前页面而不弹出提示

方法,提示框,而不,弹出,实现了,本文演示了js实现当前页面关闭而不弹出提示框的方法: 关闭当前页面并打开一个新页面(没有提示) 功能closewinandopen(URL){ 无功swinname =LR+ parseInt(数学。随机)(×100000000); / /使用随机数winname Window.open(U…

Word2007写作造纸Word2007教程。

Word2007写作造纸Word2007教程。

教程,电脑软件,在Word2007中,我们可以看到很多类似的写作像Word文档,你知道它是如何产生和萧边一起看下面。 Word2007稿纸制作步骤 启动Word2007,在菜单栏上单击,单击设置按钮,页面设置,纸张。 弹出式纸张设置界面,我们可以选择格式、颜色、行数…

PS图象处理软件CS6是美丽的花,颜色

PS图象处理软件CS6是美丽的花,颜色

字体,的花,图象,处理软件,颜色,今天,萧边将与您分享PS图象处理软件CS6的美丽的方式做出漂亮的颜色和字体。这个教程很好。字体非常漂亮,建议大家一起学习。 步 创建一个新的空白文件,输入你好,百度体验,设置正确的字体大小。 右键单击图层,选择…