Orace分析函数ntile与width_bucket

ntile:

伪SQL: ntile(<number of bucket>:exp) over(<partition and order to determine bucket>)

NTILE is an analytic function. It divides an ordered data set into a number of buckets indicated by expr and assigns the appropriate bucket number to each row. The buckets are numbered 1 through expr. The expr value must resolve to a positive constant for each partition. Oracle Database expects an integer, and if expr is a noninteger constant, then Oracle truncates the value to an integer. The return value is NUMBER.

The number of rows in the buckets can differ by at most 1. The remainder values (the remainder of number of rows divided by buckets) are distributed one for each bucket, starting with bucket 1.

If expr is greater than the number of rows, then a number of buckets equal to the number of rows will be filled, and the remaining buckets will be empty.

大概意思是可以看作是把有序的数据集合平均分配到指定的exp数量的桶中,将桶号分配给每一行。

如果不能平均分配,则较小桶号的桶分配额外的行,并且各个桶中能放的行数最多相差1

如果expr大于的行数,然后桶的数量等于将的行数,和剩下的桶是空的

示例:

SQL> select empno,sal, ntile(4) over(order by sal desc) as order_quartitle from
check_test;

EMPNO SAL ORDER_QUARTITLE
---------- ---------- ---------------
7839 5000 1
7902 3000 1
7788 3000 1
7566 2975 1
7698 2850 2
7782 2450 2
7499 1600 2
7844 1500 2
7934 1300 3
7521 1250 3
7654 1250 3

EMPNO SAL ORDER_QUARTITLE
---------- ---------- ---------------
7876 1100 4
7900 950 4
7369 800 4

width_bucket:

伪sql:width_bucket(<expression or column>,<lower bound>,<lower bound>,<number of buckets>)

SQL> select empno,
2 sum(sal) as t_sal,
3 width_bucket(sum(sal), 0, 5001, 6) as t_bucket
4 from check_test t
5 group by t.empno
6 ;

EMPNO T_SAL T_BUCKET
----- ---------- ----------
7782 2450 3
7839 5000 6
7844 1500 2
7698 2850 4
7521 1250 2
7902 3000 4
7566 2975 4
7654 1250 2
7788 3000 4
7934 1300 2
7499 1600 2
7876 1100 2
7369 800 1
7900 950 2

时间: 2024-10-12 18:48:08

Orace分析函数ntile与width_bucket的相关文章

Oracle分析函数ntile

有这么一个需求,将课程的成绩分成四个等级,为学生打A.B.C.D的绩效. drop table course purge; create table course ( id number, grade number ); insert into course values(1,50); insert into course values(2,55); insert into course values(3,60); insert into course values(4,65); insert

分析函数在数据分析中的应用

我们来看看下面的几个典型例子: ①查找上一年度各个销售区域排名前10的员工 ②按区域查找上一年度订单总额占区域订单总额20%以上的客户 ③查找上一年度销售最差的部门所在的区域 ④查找上一年度销售最好和最差的产品 我们看看上面的几个例子就可以感觉到这几个查询和我们日常遇到的查询有些不同,具体有: ①需要对同样的数据进行不同级别的聚合操作 ②需要在表内将多条数据和同一条数据进行多次的比较 ③需要在排序完的结果集上进行额外的过滤操作 Oracle分析函数简单实例: 下面我们通过一个实际的例子:按区域查

Oracle分析函数

1. ASCII 返回与指定的字符对应的十进制数; SQL> select ascii(A) A,ascii(a) a,ascii(0) zero,ascii( ) space from dual; A A ZERO SPACE --------- --------- --------- --------- 65 97 48 32 2. CHR 给出整数,返回对应的字符; SQL> select chr(54740) zhao,chr(65) chr65 from dual; ZH C --

学习Oracle分析函数(Analytic Functions)

Oracle提供了一些功能很强大的分析函数,使用这些函数可以完成可能需要存储过程来实现的需求. 分析函数计算基于一组数据行的聚合值,它们不同于聚合函数的是,它们为每一组返回多行结果.分析函数是除ORDER BY子句之外,在查询语句中最后执行的.所有的join和所有的WHERE ,GROUP BY 和HAVING子句都在分析函数之前执行.所以分析函数只能出现在select或ORDER BY子句中. 下图为11.2版本官方文档中给出的语法示意图: 下面简单介绍一下各个部分: analytic_fun

Oracle分析函数参考手册

Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是对于每个组返回多行, 而聚合函数对于每个组只返回一行. 常用的分析函数如下所列: row_number() over(partition by ... order by ...) rank() over(partition by ... order by ...) dense_rank() over(partition by ... order by ...) count() over(part

hive内置函数详解(分析函数、窗口函数)

cli命令 show functions; desc function concat; desc function extended concat;查看某个函数怎么使用的例子 nvl函数coalesce(v1,v2,...)返回参数中第一个非空值,如果所有值都为null返回null: set.cli.print.header=true; winfunc 员工 工资 标识 id  money type 关系型运算符优先级高到低为:not and orand or 优先级 select id ,mo

Oracle 中的分析函数

Oracle常用分析函数介绍(排名函数+窗口函数) 2014年11月30日 ? 数据库 ? 共 3903字 ? 暂无评论 ? 阅读 7,772 次 评级函数 常见评级函数如下: RANK():返回数据项在分组中的排名,在排名相等时会在名次中留下空位,造成排名不连续. DENSE_RANK():同样返回数据项在分组中排名,不过在排名相等时不会留下名位空位. CUME_DIST():返回特定值相对于一组值的位置,是累积分布(cumulative distribution)的简写. PERCENT_R

分析函数详解

Introduction Probably the easiest way to understand analytic functions is to start by looking at aggregate functions. An aggregate function, as the name suggests, aggregates data from several rows into a single result row. select avg(sal) from emp; *

Oracle分析函数学习总结

在公司经常会用到oracle分析函数,在统计这块用处很大,特别是复杂的sql查询,我就在这边结合网络一些资料进行了总结,希望可以帮助到大家: Oracle分析函数--函数列表 SUM         :该函数计算组中表达式的累积和 MIN         :在一个组中的数据窗口中查找表达式的最小值 MAX         :在一个组中的数据窗口中查找表达式的最大值 AVG          :用于计算一个组和数据窗口内表达式的平均值. COUNT       :对一组内发生的事情进行累积计数 -