Oracle分组函数实例
分组函数也叫聚合函数。如果在查询只想要查分组函数,那么跟平时的查询语句并无不同:
SQL> SELECT sum(t.PRIZENUM),avg(t.PRIZENUM) FROM T_WLF_AWARDS_RECORD t WHERE t.PRIZETYPE=3 AND t.ISSEND IN (0,1,2,3,10) AND t.ACTIVITYID=4001; SUM(T.PRIZENUM) AVG(T.PRIZENUM)
--------------- ---------------
40948 4549.7777777777
但往往不会这么简单,我们会一次查询多个列,包括普通的、没有调用分组函数的列,那么我们要注意以下几点:
1、所有未包含在组函数中的列都应该包含在 GROUP BY 子句中;
2、包含在 GROUP BY 子句中的列不必包含在SELECT 列表中;
3、where条件语句放在GROUP BY子句前面;
SQL> SELECT t2.INVITERMSISDN,t2.INVITEEMSISDN,sum(t2.PRIZENUM),t2.ACTIVETIME
2 FROM T_WLF_AWARDS_RECORD t2
3 WHERE t2.PRIZETYPE=3 AND t2.ISSEND IN (0,1,2,3,10)
4 AND t2.ACTIVITYID=4001
5 AND t2.ACTIVETIME <=to_date('2018-10-31 00:00:00','yyyy-mm-dd,hh24:mi:ss')
6 AND to_date('2018-9-01 00:00:00','yyyy-mm-dd,hh24:mi:ss') <=t2.ACTIVETIME
7 and t2.REWARDTYPE = 0
8 AND t2.INVITERMSISDN=''
9 group by t2.INVITERMSISDN,t2.INVITEEMSISDN,t2.ACTIVETIME,t2.activityid; INVITERMSISDN INVITEEMSISDN SUM(T2.PRIZENUM) ACTIVETIME
------------- ------------- ---------------- -----------
17682318557 40000613773 10086 2018/10/2 1
4、分组函数可以用在having子句和order by子句中;
SQL> SELECT t2.INVITERMSISDN,avg(t2.PRIZENUM),t2.activityid
2 FROM T_WLF_AWARDS_RECORD t2
3 WHERE t2.PRIZETYPE=3 AND t2.ISSEND IN (0,1,2,3,10)
4 AND t2.ACTIVETIME <=to_date('2018-10-31 00:00:00','yyyy-mm-dd,hh24:mi:ss')
5 AND to_date('2018-9-01 00:00:00','yyyy-mm-dd,hh24:mi:ss') <=t2.ACTIVETIME
6 and t2.REWARDTYPE = 0
7 group by t2.INVITERMSISDN,t2.activityid
8 having avg(t2.PRIZENUM) > 200
9 order by avg(t2.PRIZENUM); INVITERMSISDN AVG(T2.PRIZENUM) ACTIVITYID
------------- ---------------- -----------
40000748105 300 6062
40000753029 300 6062
40000753874 300 6062
40000753990 300 6062
40000753949 300 6062
40000756034 300 6062
17682318557 10086 4001 7 rows selected
注意where先筛选出数据,再进行分组函数运算,最后再通过having对结果过滤。
Oracle分组函数实例的更多相关文章
- 【转】【CUBE】Oracle分组函数之CUBE魅力
http://blog.itpub.net/519536/viewspace-610997/ Oracle的CUBE与ROLLUP功能很相似,也是在数据统计分析领域的一把好手. 关于ROLLUP的查 ...
- Oracle分组函数之CUBE魅力
Oracle的CUBE与ROLLUP功能很相似,也是在数据统计分析领域的一把好手. 关于ROLLUP的查询统计功能请参考文章<Oracle分组函数之ROLLUP魅力>(http://www ...
- Oracle分组函数之ROLLUP用法
rollup函数 本博客简单介绍一下oracle分组函数之rollup的用法,rollup函数常用于分组统计,也是属于oracle分析函数的一种 环境准备 create table dept as s ...
- Oracle分组函数以及数据分组
简单总结一下对于数据的分组和分组函数. 本文所举实例,数据来源oracle用户scott下的emp,dept ,salgrade 3表:数据如下: 一.分组函数 1.sum()求和函数.max()求最 ...
- oracle分组查询实例ORA-00979和ORA-00937错误分析
select J.ZWJGH,J.CZZXBH,J.JZZT,J.CWNY,J.JZPZH sum(J.FSE)<!-- 聚合函数字段没在分组条件中--> from JZPZXX J &l ...
- oracle 分组函数执行分析
先上例了: select job as "JOB1", avg(sal) as "avg sal" from scott.emp group by " ...
- [转]【ROLLUP】Oracle分组函数之ROLLUP魅力
原创:http://blog.itpub.net/519536/viewspace-610995 本文通过演示给出Oracle ROLLUP分组函数的用法,体验一下Oracle在统计查询领域中的函数魅 ...
- Oracle 分组函数
分组函数的介绍 分组函数作用于一组数据,并对一组数据返回一个值. (引用网上的一张图) 分组函数的使用规则 SELECT [column,] group_function(column) FROM t ...
- oracle 分组函数、视图
组函数 分组函数作用于一组数据,对每一组返回一个值 组函数类型: 1.计数 count(列名 或 表达式) 对满足的行数进行统计 2.求和 sum(列名 或 表达式 ...
随机推荐
- CodeForces 297C Splitting the Uniqueness (脑补构造题)
题意 Split a unique array into two almost unique arrays. unique arrays指数组各个数均不相同,almost unique arrays指 ...
- HDU 4352 XHXJ's LIS ★(数位DP)
题意 求区间[L,R]内满足各位数构成的数列的最长上升子序列长度为K的数的个数. 思路 一开始的思路是枚举数位,最后判断LIS长度.但是这样的话需要全局数组存枚举的各位数字,同时dp数组的区间唯一性也 ...
- 【hive】在alter修改元数据的时候报错 mismatched input 'xxxxx' expecting KW_EXCHANGE
目的:修改表某个字段属性 语句: 报错信息 错误原因: 在HiveQL中,alter命令不使用与create或select相同的语义 ; 具体来说,您不能使用“ALTER DATABASE.TABLE ...
- node.js利用express连接mysql数据库
我们创建一个mysql.js (好像大神们,称呼这叫一个模块,然后暴露一个接口)用来连接数据库 var connction ={}; connction.mysql = { host:"lo ...
- 【zznu-2173】
题目链接 题目描述 春天自幼学习人间大道,斩断情缘,现已修成正果,势必要斩尽巨魔.某朝末年,战乱四起,民不聊生,魔界与人间界的封印减弱,n只巨魔趁机降临人间,祸乱百姓.n只巨魔只知扰乱人间,会有天谴降 ...
- C# 解决串口接收数据不完整
方法1: 使 用缓存机制完成.首先通过定义一个成员变量List<byte> buffer = new List<byte> (4096);用来存放所有的数据,在接收函数里,通过 ...
- C# 用Mutex或进程限制一台电脑上同时打开多个实例
private void Form1_Load(object sender, EventArgs e) { bool requestInitialOwnership ...
- 转:SQL Server服务器名称与默认实例名不一致的修复方法
--原因分析: --SERVERPROPERTY 函数的 ServerName 属性与@@SERVERNAME 返回相似的信息. --ServerName 属性提供Windows 服务器和实例名称,两 ...
- [置顶]
flume高并发优化——(15)中间件版本升级
在系统平稳运行一年的基础上,为提供更好的服务,现针对java,kafka,flume,zk,统一进行版本升级,请各位小伙伴跟着走起来,不要掉队啊! 名称 老版本号 新版本号 jdk 1.7.0_25 ...
- Vim技能修炼教程(8) - 多窗口
多窗口 如果一个vim只能开一个窗口,那肯定是有点low.尤其是写代码的时候,打开多个文件是经常的需求. 速成教程 横着切成两个 :split 文件名 上下切换窗口 Ctrl-W加上上下键,可以实现上 ...