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 ...
随机推荐
- Linux服务器集群性能监控之Performance Co-Pilot(PCP)部署
转载自:https://blog.csdn.net/w84268426/article/details/78431778 在部署PCP时,我用到了两台cent os 7虚拟机. 1.官方安装文档htt ...
- 删除ELK的索引
终于找到一个工具,curator,可以搜索相关信息. 记录一下: 1,查询索引: curator_cli --host 10.2.16.191 --port 9200 show_indices - ...
- [机器学习理论] 降维算法PCA、SVD(部分内容,有待更新)
几个概念 正交矩阵 在矩阵论中,正交矩阵(orthogonal matrix)是一个方块矩阵,其元素为实数,而且行向量与列向量皆为正交的单位向量,使得该矩阵的转置矩阵为其逆矩阵: 其中,为单位矩阵. ...
- 事务配置在applicationContext.xml文件中不起作用,控制不了异常回滚
一.博主在学习到整合ssm框架的时候,遇到一个奇葩的问题就是将 事务的控制 ,写在在applicationContext.xml文件中不起作用,在事务控制的方法中,即使出现了异常,但是事务不会回滚的坑 ...
- Update语句的Output从句结构
原文:Update语句的Output从句结构 一,先看1个列子 ) dbo.Table_1 set status = 'C' --2,选择前3条数据output deleted.id,deleted. ...
- hdu 1506 直方图内最大矩形
题目传送门//res tp hdu 单调栈的经典问题 维护区间的左右边界计算面积即可 #include<iostream> #include<algorithm> #inclu ...
- 洛谷 P1266 速度限制 题解
题面 这道题可以理解为是一个分层图,也可以理解为是二维的SPFA dis[i][j]表示到达i这个点速度为j的最短路 然后跑已经死了的SPFA就好了: #include <bits/stdc++ ...
- Symfony4框架中单元测试和接口测试中的一些小坑
前提说明: symfony 版本 4.1.*,使用 composer create-project symfony/website-skeleton 进行安装. 目标:在一个单元测试用例中对当前工 ...
- Java设置时区
TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));
- Lua 截取字符串(截取utf-8格式字符串)
对utf-8完全没概念的可以看看我上一篇随笔:简单说说utf-8编码格式 另外,还要知道string.sub 和 string.byte 的用法. 先上完整代码: local StringHelper ...