Oracle子句【group by、having】
【分组查询】
关键字:group by 分组字段名,分组字段名...
--注意1:分组后,在select语句中只允许出现分组字段和多行函数
--注意2:如果是多字段分组,先按第一字段分组,然后每个小组继续按照第二个字段分组,以此类推。
--注意3:在where子句中不允许出现多行函数(where子句比多行函数级别高)
【分组筛选】
关键字:having
--作用:针对分组后数据进行筛选,允许使用多行函数。
--注意1 :having必须和分组关键字结合使用,不允许单独使用。
注意:where 和 having 比较:
--1.where子句不允许出现多行函数,having允许出现多行函数。
--2.where子句和having都可以使用普通字段直接进行筛选,但是where的效率高于having。
where执行顺序: from-->where-->group by-->select-->order by
having执行顺序:from-->group by-->select-->having-->order by
小结:在分组语句中:使用where进行字段级别的筛选,使用having进行多行函数筛选。
举栗子:
--查询不同部门的最高工资
select deptno,max(sal) from emp group by deptno;
--查询不同工作岗位的员工数
select job,count(*) from emp group by job;
--查询不同部门的不同工作岗位的人数
select deptno,job,count(*) from emp group by deptno,job order by deptno;
--查询不同部门的不同工作岗位的并且人数大于1的信息
select deptno,job,count(*) from emp group by deptno,job having count(*)>1 order by deptno;
--查询部门号大于10的不同部门的不同工作岗位的人数
select deptno,job,count(*) from emp group by deptno,job having deptno>10 order by deptno;
select deptno,job,count(*) from emp where deptno>10 group by deptno,job order by deptno;--执行效率高
Oracle子句【group by、having】的更多相关文章
- Oracle中group by用法
Oracle中group by用法 在select 语句中可以使用group by 子句将行划分成较小的组,一旦使用分组后select操作的对象变为各个分组后的数据,使用聚组函数返回的是每一个组的汇总 ...
- oracle 中GROUP BY的用法
转自:http://blog.csdn.net/basenet855x/article/details/6694150 问题: select item.itemnum,item.in1,item.in ...
- Oracle中group by 的扩展函数rollup、cube、grouping sets
Oracle的group by除了基本使用方法以外,还有3种扩展使用方法,各自是rollup.cube.grouping sets.分别介绍例如以下: 1.rollup 对数据库表emp.如果当中两个 ...
- oracle数据库GROUP BY 子句
1.GROUP BY子句 在SELECT 列表中所有未包含在组函数中的列都应该包含在GROUP BY 子句中. 如下: SELECT deptno,AVG(sal) from emp GROUP BY ...
- Oracle之Group by和Having-----转了
在介绍GROUP BY 和 HAVING 子句前,我们必需先讲讲sql语言中一种特殊的函数:聚合函数,例如SUM, COUNT, MAX, AVG等.这些函数和其它函数的根本区别就是它们一般作用在多条 ...
- oracle的group by问题
ORA-00979 不是 GROUP BY 表达式”这个错误,和我前面介绍的另外一个错误ORA-00937一样使很多初学oracle的人爱犯的. 我在介绍使用聚合函数中用group by来分组数据时特 ...
- oracle 中 group by 加强
group by rollup(a,b) = group by a,b + group by a + group by null SQL> select deptno,job,sum(sal) ...
- 【Oracle】group by 和partition by的区别
总结: group 单纯分组 partition 也能分组,但还具备累计的功能 order by 排序,与计算函数联用,需要累加计算 0.select * from test; ---测试数据 ...
- oracle中group by的高级用法
简单的group by用法 select c1,sum(c2) from t1 where t1<>'test' group by c1 having sum(c2)>100; ro ...
随机推荐
- es6 单例
class Singleton { constructor() { this.conn = this.connect(); } static getInstance() { if (!Singleto ...
- Java各种反射性能对比
对各种方法实现get方法的性能进行了一个测试. 总共有5个测试,,每个测试都是执行1亿次 1. 直接通过Java的get方法 2.通过高性能的ReflectAsm库进行测试 3.通过Java Clas ...
- java中使用MappedByteBuffer将 File类转ByteBuffer
public static WavFile openWavFile(File file) throws IOException, WavFileException { FileChannel chan ...
- Spring-Kafka —— 消费如何达到最高的吞吐量
首先简单的介绍一下消费者对topic的订阅.客户端的消费者订阅了topic后,如果是单个消费者,那么消费者会顺序消费这些topic分区中的数据,如果是创建了消费组有多个消费者,那么kafak的服务端将 ...
- Android View重绘和更新: invalidate和requestLayout 总结的不错 赶紧复制。。哈哈
总述:View有两个很重要的方法:invalidate和requestLayout,常用于View重绘和更新. Invalidate:To farce a view to draw,call inva ...
- maven 依赖原则
maven 依赖原则 ###间接依赖路径最短优先 a->b->c1.0 a->e->f->c1.1 ====>c1.0 申明顺序优先 <!-- test1 - ...
- JMeter-- ThreadGroup原理分析
JMeterEngine会驱动JMeter ThreadGroup启动Test Threads 执行测试,其本身也是一个Runnable,这里把测试驱动(JUnit或者其他类似main之类的)看作主线 ...
- SaltStack安装部署
SaltStack安装部署 安装: 一. master: 1. 配置yum源安装 # rpm --import https://repo.saltstack.com/yum/redhat/6/x86_ ...
- 「java.util.concurrent并发包」之 ReentrantReadWriteLock
一 引言 在多线程的环境下,对同一份数据进行读写,会涉及到线程安全的问题.比如在一个线程读取数据的时候,另外一个线程在写数据,而导致前后数据的不一致性:一个线程在写数据的时候,另一个线程也在写,同样也 ...
- JavaScript--QuckStudy
Day1: 初识JS: https://www.liaoxuefeng.com/wiki/1022910821149312 >打印: alert('我要学JavaScript!'); >J ...