ORACLE分析函数(8) WIDTH-BUCKET

WIDTH-BUCKET会根据参数设置,返回当前记录所属的bucket number。语法格式如下:

      WIDTH_BUCKET(expression, minval expression, maxval expression, num buckets)

       第一个参数,为某数字或者日期表达式;第二个参数为某范围的下限;第三个参数为某范围的上限;第四个参数为对某范围进行等值划分bucket的数量。如

WIDTH_BUCKET(expression, 0, 2000, 4),会划分4个bucket,其范围为【0,500)【500,100)【1000,1500)【1500,2000)。如果我们指定EXPRESSION 值为300,则width_bucker 返回1,以此类推。如果express的值小于0,则返回0;如果expression大于或者等于2000,则返回5.

SQL> select cust_credit_limit,width_bucket(cust_credit_limit,0,15000,3) from customers where rownum < 15;  

CUST_CREDIT_LIMIT WIDTH_BUCKET(CUST_CREDIT_LIMIT,0,15000,3)
----------------- -----------------------------------------
             1500                                         1
             7000                                         2
            11000                                         3
             1500                                         1
             9000                                         2
             9000                                         2
             3000                                         1
             7000                                         2
            11000                                         3
             1500                                         1
             9000                                         2
            15000                                         4
            11000                                         3
             7000                                         2

如果,第一个参数为null,则返回null

SQL> select cust_credit_limit,width_bucket(case when cust_credit_limit<2000 then null else cust_credit_limit end,0,15000,3) wb from customers where rownum < 15;  

CUST_CREDIT_LIMIT         WB
----------------- ----------
             1500
             7000          2
            11000          3
             1500
             9000          2
             9000          2
             3000          1
             7000          2
            11000          3
             1500
             9000          2
            15000          4
            11000          3
             7000          2

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索参数
, bucket
, expression
范围
oracle 分析函数、oracle分析函数大全、oracle分析函数详解、oracle的分析函数、oracle 分析函数 over,以便于您获取更多的相关知识。

时间: 2024-10-31 14:40:49

ORACLE分析函数(8) WIDTH-BUCKET的相关文章

ORACLE分析函数(4) FIRST/LAST排名查询

first/last函数允许我们对某数据集进行排序,并对排序结果的第一条记录和最后一条记录进行处理.在查询出第一条或者最后一条记录后,我们需要应用一个聚合函数来处理特定列,这是为了保证返回结果的唯一性,因为排名第一的记录和排名最后的记录可能会存在多个.使用first/last函数可以避免自连接或者子查询,因此可以提高处理效率. 语法格式: aggregate_function KEEP ( DENSE_RANK LAST ORDER BY expr [ DESC | ASC ] [NULLS {

Oracle分析函数、多维函数和Model函数的简要说明

以下代码均经过测试,可直接运行 Oracle分析函数.多维函数和Model函数简要说明,主要针对BI报表统计,不一定很全面,但对BI应用场景做了少许说明 --创建一张销售数量表,数据趋势是递增的 CREATE TABLE ComputerSales AS SELECT 120+TRUNC(rn/12)+ROUND(DBMS_RANDOM.VALUE(1,10)) SalesNumber FROM ( SELECT level,ROWNUM rn FROM DUAL CONNECT BY ROWN

Oracle分析函数概述

Oracle分析函数概述 Oracle中的分析函数和聚合函数相似,但是对于每一组记录,无论 多少行,聚合函数只返回一行值,而分析函数对其中每一行记录都返回值.这一组记录,称 为分析函数的一个(WINDOW),窗口决定了要处理数据的范围,该范围在物理上可以由指定 的行数来确定,或者在逻辑上由相对偏移量来确定.分析函数总是在除了ORDER BY之外的其 他子句运算后才执行的,所以它不能出现在where.group by等子句中,只能出现在select列 表和order by子句中. 准备测试数据 在

ORACLE分析函数(5) 其他

1.除了使用数字来指定窗口范围,我们还可以使用日期类型,如: 2.lead和lag,返回当前窗口中与当前记录距离为n的记录.lag为向前取记录,lead为向后取记录 SELECT prod_id, lag(prod_list_price,1) over(order by prod_id) pre_1, lag(prod_list_price,2) over(order by prod_id) pre_2, prod_list_price, lead(prod_list_price,1) over

ORACLE分析函数(2)

下面,我们来解析一下分析函数的语法格式(语法格式图请参照:http://blog.csdn.net/yidian815/article/details/12709223). 函数名称 对it人士来时,再简单不过的东西了,不做描述. 函数参数: 分析函数通常会具有0-3个参数. 分区子句: 通过分区子句,可以对记录集进行分区,然后针对每个分区分别进行统计运算.在分析函数中,使用分区子句不必使用()将子句包围起来.在一个查询当中,我们可以使用多个分析函数,每个分析函数可以使用独立的分区规则.如果没有

ORACLE分析函数(1)

分析函数式ORACLE提供的用来进行数据统计的强有力工具,与我们常用的聚合函数具有一些相似性,但又完全不同.聚合函数,首先会将数据进行分组,然后对每一组数据进行运算,如求和sum,求平均AVG等,对于聚合函数,每一个分组返回一条数据结果行.分析函数,同样也会对数据进行求和或者求平均等运算,但是,分析函数计算的基础并不是分组,而是窗口,而且分析函数根据每条记录会返回一个处理结果. 首先,看一下下面的例子: SQL> select prod_subcategory_id,1 from product

常用Oracle分析函数大全_oracle

Oracle的分析函数功能非常强大,工作这些年来经常用到.这次将平时经常使用到的分析函数整理出来,以备日后查看. 我们拿案例来学习,这样理解起来更容易一些. 1.建表 create table earnings -- 打工赚钱表 ( earnmonth varchar2(6), -- 打工月份 area varchar2(20), -- 打工地区 sno varchar2(10), -- 打工者编号 sname varchar2(20), -- 打工者姓名 times int, -- 本月打工次

【分析函数】Oracle分析函数之LAG和LEAD

[分析函数]Oracle分析函数之LAG和LEAD Lag和Lead函数可以在一次查询中取出同一字段的前N行的数据和后N行的值.这种操作可以使用对相同表的表连接来实现,不过使用LAG和LEAD有更高的效率. lag的语法如下: lead的语法如下: lead 和lag 的语法类似以下以lag为例进行讲解! lag(exp_str,offset,defval) over() exp_str 是要做对比的字段 offset 是exp_str字段的偏移量 比如说 offset 为2 则 拿exp_st

Oracle 分析函数及常用函数

什么叫分析函数(Analytic function)? Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是 对于每个组返回多行,而聚合函数对于每个组只返回一行. 基本语法 function_name(arg1,arg2,...) OVER (<partition-clause> <order-by-clause > <window clause>) 另外,还需要提到的一点是,在有分析函数参与的SQL语句中,执行流程依次