创建测试表

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()分析函数的更多相关文章

  1. 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 ...

  2. sql:sum(value)与count(letter),当用户不存在时查询到的值

    SELECT sum(value) FROM invoice where username='yueer' SELECT count(letters) FROM invoice where usern ...

  3. Mysql与Sql server,Sum函数跟Count函数

    两者均是统计类函数,都不计算NULL字段!!! 单纯计算行数的话,count的效率比sum的效率高 MySQL SUM()函数介绍 SUM()函数用于计算一组值或表达式的总和,SUM()函数的语法如下 ...

  4. 【Hive】窗口函数

    我们都知道在sql中有一类函数叫做聚合函数,例如sum().avg().max()等等, 这类函数可以将多行数据按照规则聚集为一行,一般来讲聚集后的行数是要少于聚集前的行数的. 但是有时我们想要既显示 ...

  5. MySql COUNT(),SUM()组合用法

    需求:统计工作室表的数量,按创建时间分组 问题:按创建时间分组,如何将计数后的结果求和 解决:用COUNT(DISTINCT col_name)讲每行计数为1,再求和分组 SELECT DATE_FO ...

  6. mysql练习----SUM and COUNT/zh图(二)

    世界国家概况 GROUP BY 和 HAVING 通过包括一个GROUP BY子句功能, SUM并将COUNT 其应用于共享值的项目组.当你指定 GROUP BY continent 结果是每个不同的 ...

  7. hive对有null值的列进行avg,sum,count等操作时会不会过滤null值

    在hive中,我们经常会遇到对某列进行count.sum.avg等操作计算记录数.求和.求平均值等,但这列经常会出现有null值的情况,那这些操作会不会过滤掉null能呢? 下面我们简单测试下: wi ...

  8. Oracle 10gR2分析函数

    Oracle 10gR2分析函数汇总 (Translated By caizhuoyi 2008‐9‐19) 说明:  1. 原文中底色为黄的部分翻译存在商榷之处,请大家踊跃提意见:  2. 原文中淡 ...

  9. Oracle分析函数——函数列表

    --------------聚合函数 SUM :该函数计算组中表达式的累积和 MIN :在一个组中的数据窗口中查找表达式的最小值 MAX :在一个组中的数据窗口中查找表达式的最大值 AVG :用于计算 ...

随机推荐

  1. 【持续集成】使用Jenkins实现多平台并行集成

    使用Jenkins实现多平台并行集成 二月 15, 2012 暂无评论 我们的后端C应用都是支持跨平台的,至少目前在Linux和Solaris上运行是没有问题的,这样一来我们在配置持续集成环境时就要考 ...

  2. 【JAVA、C++】LeetCode 001 Two Sum

    Given an array of integers, find two numbers such that they add up to a specific target number. The ...

  3. Eclipse设置C++自动补全变量名快捷键Alt + /

    使用快捷键:Alt+/ 要是还是有些场合不能提示,按照下列步骤 Window-Preferences-c/c++-Editor-Content Assist-Advanced 将未勾选的全部勾选

  4. subversion 版本库数据迁移 从一台服务器迁移到另一台新有服务器

    [root@NGINX-APACHE-SVN pro]# pwd /var/www/html/svn/pro [root@NGINX-APACHE-SVN pro]# svnadmin dump /v ...

  5. .net学习笔记---HttpResponse类

      HttpReponse是服务器接收到浏览器的请求后,处理返回结果常用的一个类. 一.属性 Buffer 获取或设置一个值,该值指示是否缓冲输出并在处理完整个响应之后发送它. BufferOutpu ...

  6. Oracle 日常应用和操作笔记

    简单整理oracle日常应用笔记. 1.采用excel表格中的数据直接粘贴数据库记录中,默认会在后面加一个空格“”,操作完成后一定要记得对空格匹配然后修改一下. 2.查询数据库里的所有表结构, 采用s ...

  7. Mac OS X 上的安装haskell开发环境

    到haskell官方下载haskell的工具包: https://downloads.haskell.org/~platform/2014.2.0.0/Haskell%20Platform%20201 ...

  8. Java Hour 57 Java Architecture

    Java 的架构中有4个重要的组成部分: 1 Java programming langrage 2 Java class file format 3 Java API 4 Java virtual ...

  9. matlab中的ishghandle

    ishghandle True for Handle Graphics object handles. ishghandle(H) returns an array that contains 1's ...

  10. 微信公众平台开发3:订阅事件subscribe处理

    新用户关注微信公众平台,将产生一个订阅事件,即subscribe事件,默认代码中没有对这一事件进行相应处理. 在新用户关注公众平台后,可能想知道该平台提供了哪些功能,以及怎样使用该平台,通俗一点讲就是 ...