oracle 分析函数5

RATIO_TO_REPORT

-- 列出上一年度每个月的销售总额、年底销售额以及每个月的销售额占全年总销售额的比例
-- 方法①:
select all_sales.*,
100 * round(cust_sales / region_sales, 2) || ‘%‘ Percent from
(select o.cust_nbr customer,o.region_id region,
sum(o.tot_sales) cust_sales,
sum(sum(o.tot_sales)) over(partition by o.region_id) region_sales
from orders_tmp o
where o.year = 2001 group by o.region_id, o.cust_nbr) all_sales
where all_sales.cust_sales > all_sales.region_sales * 0.2;

-- 方法②:
select region_id, salesperson_id,
sum(tot_sales) sp_sales,
round(sum(tot_sales) / sum(sum(tot_sales)) over (partition by region_id), 2) percent_of_region
from orders where year = 2001
group by region_id, salesperson_id
order by region_id, salesperson_id;

-- 方法③
select region_id, salesperson_id,
sum(tot_sales) sp_sales,
(round(ratio_to_report(sum(tot_sales)) over (partition by region_id), 2)) * 100 || ‘%‘ sp_ratio
from orders_tmp where year = 2001
group by region_id, salesperson_id
order by region_id, salesperson_id;
时间: 2024-11-05 12:21:24

oracle 分析函数5的相关文章

ORACLE分析函数(1)

1. oracle中日期转换为yyyy年mm月dd日的形式 select to_char(sysdate,'"年"mm"月"dd"日"') from dual; 2. oracle分析函数语法 2.1 ORDER BY select e.last_name, e.manager_id, e.salary, avg(e.salary) over() as emp_count --等同于(select avg(*) from employees) f

Oracle分析函数学习总结

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

Oracle分析函数用法(二)

Oracle分析函数--函数用法 Oracle分析函数实际上操作对象是查询出的数据集,也就是说不需二次查询数据库,实际上就是oracle实现了一些我们自身需要编码实现的统计功能,对于简化开发工作量有很大的帮助,特别在开发第三方报表软件时是非常有帮助的.Oracle从8.1.6开始提供分析函数. oracle分析函数的语法: function_name(arg1,arg2,...) over (<partition-clause> <order-by-clause ><wind

Oracle分析函数入门

一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计值. 分析函数和聚合函数的不同之处是什么?普通的聚合函数用group by分组,每个分组返回一个统计值,而分析函数采用partition by分组,并且每组每行都可以返回一个统计值. 分析函数的形式分析函数带有一个开窗函数over(),包含三个分析子句:分组(partition by), 排序(or

[Oracle] 分析函数(1)- 语法

语法概述 Analytic-Function Analytic_Clause之PARTITION子句 Analytic_Clause之ORDER BY子句 Analytic_Clause之WINDOWING子句 举例: 下面看一个例子简单过下语法: 例: sum(sal) over (partition by deptno order by ename) new_alias sum就是函数名 (sal)是分析函数的参数,每个函数有0~3个参数,参数可以是表达式,例如:sum(sal+comm)

Oracle分析函数Over()

一.Over()分析函数 说明:聚合函数(如sum().max()等)可以计算基于组的某种聚合值,但是聚合函数对于某个组只能返回一行记录.若想对于某组返回多行记录,则需要使用分析函数. 1.rank()/dense_rank over(partition by ... order by ...) 说明:over()在什么条件之上; partition by 按哪个字段划分组: order by 按哪个字段排序: 注意: (1)使用rank()/dense_rank() 时,必须要带order b

oracle分析函数 (转)

一.总体介绍 12.1 分析函数如何工作 语法 FUNCTION_NAME(<参数>,…) OVER (<PARTITION BY 表达式,…> <ORDER BY 表达式 <ASC DESC> <NULLS FIRST NULLS LAST>> <WINDOWING子句>) PARTITION子句 ORDER BY子句 WINDOWING子句 缺省时相当于RANGE UNBOUNDED PRECEDING 1. 值域窗(RANGE

[转]oracle分析函数Rank, Dense_rank, row_number

oracle分析函数Rank, Dense_rank, row_number 分析函数2(Rank, Dense_rank, row_number)   目录 =============================================== 1.使用rownum为记录排名 2.使用分析函数来为记录排名 3.使用分析函数为记录进行分组排名 一.使用rownum为记录排名: 在前面一篇<Oracle开发专题之:分析函数>,我们认识了分析函数的基本应用,现在我们再来考虑下面几个问题:

[转]oracle 分析函数over

  oracle 分析函数over 分析函数(OVER) 目录: =============================================== 1.Oracle分析函数简介 2. Oracle分析函数简单实例 3.分析函数OVER解析 一.Oracle分析函数简介: 在日常的生产环境中,我们接触得比较多的是OLTP系统(即Online Transaction Process),这些系统的特点是具备实时要求,或者至少说对响应的时间多长有一定的要求:其次这些系统的业务逻辑一般比较复

Oracle 分析函数

Oracle分析函数 --row_number():连续不重复 1234567 --rank():跳跃可重复 12333678 --dense_rank():连续可重复 12333456 row_number() over(partition by deptno order by sal desc) over( partition by [分区字段,可以有多个] order by [一个或多个字段]) 笔试题题目如下: 题目如下: 请用一条sql语句查询出scott.emp表中每个部门工资前三位