sum()over()和count()over()分析函数
创建测试表
create table test(sales_id varchar2(2),sales varchar2(10),dest varchar2(10),dept varchar2(10),revenue number);
插入测试数据
insert into test values('','smith','hangzhou','市场',1000);
insert into test values('','smith','wenzhou','市场',2000);
insert into test values('','allen','wenzhou','渠道',3000);
insert into test values('','allen','wenzhou','渠道',4000);
insert into test values('','jekch','shanghai','渠道',2500);
insert into test values('','smith','hangzhou','市场',1000);
insert into test values('','smith','wenzhou','市场',2000);
commit;
查看表记录
SQL> select * from test;
SALES_ID SALES DEST DEPT REVENUE
-------- ---------- ---------- ---------- ----------
11 smith hangzhou 市场 1000
12 smith wenzhou 市场 2000
13 allen wenzhou 渠道 3000
14 allen wenzhou 渠道 4000
15 jekch shanghai 渠道 2500
11 smith hangzhou 市场 1000
12 smith wenzhou 市场 2000
SQL> select sales_id,sales,dest,dept,revenue,sum(revenue) over() as 总销售额 from test;
SALES_ID SALES DEST DEPT REVENUE 总销售额
-------- ---------- ---------- ---------- ---------- ----------
11 smith hangzhou 市场 1000 15500
12 smith wenzhou 市场 2000 15500
13 allen wenzhou 渠道 3000 15500
14 allen wenzhou 渠道 4000 15500
15 jekch shanghai 渠道 2500 15500
11 smith hangzhou 市场 1000 15500
12 smith wenzhou 市场 2000 15500
按照sales_id order by排序计算递加的销售总额
SQL> select sales_id,sales,dest,dept,revenue,sum(revenue)over(order by sales)递加销售总额 from test;
SALES_ID SALES DEST DEPT REVENUE 递加销售总额
-------- ---------- ---------- ---------- ---------- ------------
14 allen wenzhou 渠道 4000 7000
13 allen wenzhou 渠道 3000 7000
15 jekch shanghai 渠道 2500 9500
11 smith hangzhou 市场 1000 15500
12 smith wenzhou 市场 2000 15500
12 smith wenzhou 市场 2000 15500
11 smith hangzhou 市场 1000 15500
7 rows selected
SQL> select sales_id,sales,dest,dept,revenue,sum(revenue)over(partition by sales_id) 分组销售总额 from test;
SALES_ID SALES DEST DEPT REVENUE 分组销售总额
-------- ---------- ---------- ---------- ---------- ------------
11 smith hangzhou 市场 1000 2000
11 smith hangzhou 市场 1000 2000
12 smith wenzhou 市场 2000 4000
12 smith wenzhou 市场 2000 4000
13 allen wenzhou 渠道 3000 3000
14 allen wenzhou 渠道 4000 4000
15 jekch shanghai 渠道 2500 2500
对sales_id进行分组,然后分组求sum
SQL> select sales_id,sales,dest,dept,revenue,sum(revenue)over(partition by sales order by sales_id) 分组递加销售总额 from test;
SALES_ID SALES DEST DEPT REVENUE 分组递加销售总额
-------- ---------- ---------- ---------- ---------- ----------------
13 allen wenzhou 渠道 3000 3000
14 allen wenzhou 渠道 4000 7000
15 jekch shanghai 渠道 2500 2500
11 smith hangzhou 市场 1000 2000
11 smith hangzhou 市场 1000 2000
12 smith wenzhou 市场 2000 6000
12 smith wenzhou 市场 2000 6000
对sales进行分组,然后分组内递加sum。
看下面的count()over()分析函数的使用
SQL> select sales_id,sales,count(*)over()求总计数,
count(*)over(order by sales_id)递加求计数,
count(*)over(partition by sales_id)分组求计数,
count(*)over(partition by sales_id order by sales)分组递加求计数
from test;
SALES_ID SALES 求总计数 递加求计数 分组求计数 分组递加求计数
-------- ---------- ---------- ---------- ---------- --------------
11 smith 7 2 2 2
11 smith 7 2 2 2
12 smith 7 4 2 2
12 smith 7 4 2 2
13 allen 7 5 1 1
14 allen 7 6 1 1
15 jekch 7 7 1 1
本文转自:http://blog.itpub.net/25362835/viewspace-1057319/
sum()over()和count()over()分析函数的更多相关文章
- 6.组函数(avg(),sum(),max(),min(),count())、多行函数,分组数据(group by,求各部门的平均工资),分组过滤(having和where),sql优化
1组函数 avg(),sum(),max(),min(),count()案例: selectavg(sal),sum(sal),max(sal),min(sal),count(sal) from ...
- sql:sum(value)与count(letter),当用户不存在时查询到的值
SELECT sum(value) FROM invoice where username='yueer' SELECT count(letters) FROM invoice where usern ...
- Mysql与Sql server,Sum函数跟Count函数
两者均是统计类函数,都不计算NULL字段!!! 单纯计算行数的话,count的效率比sum的效率高 MySQL SUM()函数介绍 SUM()函数用于计算一组值或表达式的总和,SUM()函数的语法如下 ...
- 【Hive】窗口函数
我们都知道在sql中有一类函数叫做聚合函数,例如sum().avg().max()等等, 这类函数可以将多行数据按照规则聚集为一行,一般来讲聚集后的行数是要少于聚集前的行数的. 但是有时我们想要既显示 ...
- MySql COUNT(),SUM()组合用法
需求:统计工作室表的数量,按创建时间分组 问题:按创建时间分组,如何将计数后的结果求和 解决:用COUNT(DISTINCT col_name)讲每行计数为1,再求和分组 SELECT DATE_FO ...
- mysql练习----SUM and COUNT/zh图(二)
世界国家概况 GROUP BY 和 HAVING 通过包括一个GROUP BY子句功能, SUM并将COUNT 其应用于共享值的项目组.当你指定 GROUP BY continent 结果是每个不同的 ...
- hive对有null值的列进行avg,sum,count等操作时会不会过滤null值
在hive中,我们经常会遇到对某列进行count.sum.avg等操作计算记录数.求和.求平均值等,但这列经常会出现有null值的情况,那这些操作会不会过滤掉null能呢? 下面我们简单测试下: wi ...
- Oracle 10gR2分析函数
Oracle 10gR2分析函数汇总 (Translated By caizhuoyi 2008‐9‐19) 说明: 1. 原文中底色为黄的部分翻译存在商榷之处,请大家踊跃提意见: 2. 原文中淡 ...
- Oracle分析函数——函数列表
--------------聚合函数 SUM :该函数计算组中表达式的累积和 MIN :在一个组中的数据窗口中查找表达式的最小值 MAX :在一个组中的数据窗口中查找表达式的最大值 AVG :用于计算 ...
随机推荐
- 【leetcode】Subsets
Subsets Given a set of distinct integers, S, return all possible subsets. Note: Elements in a subset ...
- maven No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
maven install项目时出错,提示信息如下: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-pl ...
- 利用cocostudio库函数 实现左右滑动的背包栏UI (cocos2d-x 2.2.0)
.h #ifndef __COMMON_COMPONENTS__ #define __COMMON_COMPONENTS__ #include "cocos2d.h" #inclu ...
- Android 启动画面
如果你的程序初始化时间过长,那么在初始化之前,程序会现实一个空白的activity页,十分难看. 添加一个启动画面的方法就是为响应的activity加入自定义的Theme,并在theme中设定 and ...
- iOS CALayer动画中使用的3个tree
在网上经常看到关于layer的tree的描述,不太理解,今天找到了官方文档,原文在Core Animation Programming Guide 中. Layer Trees Reflect Dif ...
- PHP--TP框架----生成验证码的方式
TP框架----生成验证码的方式 xianshi.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN& ...
- RocketMQ最佳实践
1.RocketMQ中的专业术语 Topic topic表示消息的第一级类型,比如一个电商系统的消息可以分为:交易消息.物流消息...... 一条消息必须有一个Topic. Tag Tag表示消息的第 ...
- 【读书笔记】读《高性能网站建设指南》及《高性能网站建设进阶指南:Web开发者性能优化最佳实践》
这两本书就一块儿搞了,大多数已经理解,简单做个标记.主要对自己不太了解的地方,做一些记录. 一.读<高性能网站建设指南> 0> 黄金性能法则:只有10%~20%的最终用户响应时间 ...
- subversion 版本库数据迁移 从一台服务器迁移到另一台新有服务器
[root@NGINX-APACHE-SVN pro]# pwd /var/www/html/svn/pro [root@NGINX-APACHE-SVN pro]# svnadmin dump /v ...
- 制做RPM包
http://nmshuishui.blog.51cto.com/1850554/1583117 [root@NGM ~]# yum install pcre-devel zlib-devel ope ...