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 emp
/
截图:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
2
组函数和null在一起
案例:求员工的平均奖金
错误sql:
select avg(comm)
方式1,sum(comm)/count(comm)方式2,sum(comm)/count(*)
方式3
from emp;
截图:
错误原因:
select count(comm),count(*) from emp;
分析:
--组函数自己主动滤空,组函数忽略空值
--修正函数的滤空
select count(nvl(comm,0)),count(*) fromemp;
3.分组数据
A
求各个部门的平均工资
思路:须要把各个部门的数据划分….10部门
20部门 30部门….分组……
select deptno,avg(sal)
from emp
group by deptno;
执行结果:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
B
组函数设计的本意
(1)、select检索的列
必需要位于group by后面的集合列中
(2)、组函数设计的本意:必需要在分组数据之上,进行结果集的检索….
注意:group by子句要求:全部在select中出现的列,都必须在出现group
by分组子句中。
select a, b, c
from emp
group by a, b, c,d;
这样的格式是对的,由于在select后的a、b、c都在groub
by后面。
select a, b, f
from emp
group by a, b, c,d;
这样的格式是错的,由于在select后的f不在group中
4
在GROUP BY子句中包括多个列
--按部门
不同的职位
统计平均工资
--先依照部门分组。在依照job分组,假设deptno和job一样,就是同一组。然后求平均工资。
--求各个部门的,每个工种的平均工资
select deptno,job,avg(sal),count(deptno)
from emp
group by deptno,job
order by 1;
截图:
5
分组过滤
--查询各个部门的平均工资
--进一步。查询平均工资大于2000的部门
select deptno,avg(sal)
from emp
group by deptno
having avg(sal) > 2000;
6 having和where子句差别
求10号部门的平均工资
方法1:先分组,在过滤
select deptno,avg(sal)
from emp
group by deptno
having deptno=10;
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
方法2:先过滤再分组
select deptno,avg(sal)
from emp
where deptno = 10
group by deptno;
7
关于sql优化
select * from emp;
select deptno, ename, ...,
from emp 把要显示的全部的列都写出来,速度快,,不须要"翻译"
select *form emp
where (deptno = 10) and (deptno = 20) and (deptno=30)
<---------
oracle解析逻辑表达式
的方向....从右向左
6.组函数(avg(),sum(),max(),min(),count())、多行函数,分组数据(group by,求各部门的平均工资),分组过滤(having和where),sql优化的更多相关文章
- 三、函数 (SUM、MIN、MAX、COUNT、AVG)
第八章 使用数据处理函数 8.1 函数 SQL支持利用函数来处理数据.函数一般是在数据上执行的,给数据的转换和处理提供了方便. 每一个DBMS都有特定的函数.只有少数几个函数被所有主要的DBMS等同的 ...
- 聚合函数:sum,avg,max,min,count
group by 分组的使用方法 数学函数:ABS.ceiling.floor.power.round.sqrt.square 练习:
- MDX Step by Step 读书笔记(七) - Performing Aggregation 聚合函数之 Max, Min, Count , DistinctCount 以及其它 TopCount, Generate
MDX 中最大值和最小值 MDX 中最大值和最小值函数的语法和之前看到的 Sum 以及 Aggregate 等聚合函数基本上是一样的: Max( {Set} [, Expression]) Min( ...
- 线段树-sum/max/min/区间更新
写一个板子. #include <cstdio> #include <algorithm> using namespace std; +; #define ROOT 1, 1, ...
- Oracle Day3 多行函数、多表查询
1.多行函数 Sum avg max min count 组函数具有滤空的作用(添加nvl屏蔽该功能) 分组group by 多行分组 分组过滤 where 和分组过滤的区别(having) 分组的增 ...
- SQL单行函数和多行函数
单行函数和多行函数示意图: 单行函数分为五种类型:字符函数.数值函数.日期函数.转换函数.通用函数 单行函数: --大小写控制函数 select lower('Hello World') 转小写, u ...
- 74.Python中ORM聚合函数详解:Max,Min
Max和Min:获取指定对象的最大值和最小值. 1. 比如:想要获取Author表中的最大的年龄和最小的年龄.示例代码如下: from django.http import HttpResponse ...
- Oracle_多行函数
Oracle_多行函数 多行函数min(),max(),count(),sum(),avg() --1.1统计公司的最高工资,最低工资和总人数 --对于null值直接略过,不做运算 --max ...
- Oracle-DQL 5- 分组函数(多行函数)
分组函数(多行函数):--针对表中的多行数据进行运算,返回一个结果 1.多行函数 --sum() 求和SELECT SUM(sal) FROM emp; --avg() 求平均值SELECT AVG( ...
随机推荐
- Servlet的学习之Response响应对象(3)
本篇来说明响应对象HttpServletResponse对象的最后一点内容. 首先来看响应对象控制浏览器定时刷新,在我的web应用[myservlet]中创建Servlet,在该Servlet中设置响 ...
- Android开发之查看应用包名package和入口activity名称的方法
使用android自动化测试工具monkeyrunner启动应用时,需要填写被测程序的包名和启动的Activity,以下有两种查看应用包名package和入口activity名称的方法: 方法一:使用 ...
- 基础知识(10)- 部署应用程序和applet
10.1 JAR文件 10.1.1 清单文件 10.1.2 可运行JAR文件 10.1.3 资源 10.1.4 密封 10.2 Java Web Start 10.2.1 沙箱 10.2. ...
- Documentation | AnsibleWorks
Documentation | AnsibleWorks Welcome to the Ansible documentation! Ansible is an IT automation too ...
- 【Unity 3D】学习笔记三十九:控制组件
控制组件 角色控制组件和刚体组件都具备物理引擎的功能,须要绑定游戏对象才干实现对应的物理效果,而且同一个游戏对象中两者仅仅能存在一个,不能共存.刚体组件能够很精确的模拟现实世界中的一切物理效果,而角色 ...
- ExtJs4 笔记(13) Ext.menu.Menu 菜单、Ext.draw.Component 绘图、Ext.resizer.Resizer 大小变更
本篇讲解菜单.绘图.还有大小变更控件.菜单控件可以附加到各种其他控件中,比如按钮.工具栏等,甚至可以直接通过通过右键打开(模拟右键菜单):ext对绘图的支持可以让我们通过js来绘图:大小变更控件可以让 ...
- Qt中使用定时器(可使用QObject::timerEvent定时执行,QTimer::singleShot可只触发一次)
在Qt中使用定时器有两种方法,一种是使用QObiect类的定时器:一种是使用QTimer类.定时器的精确性依赖于操作系统和硬件,大多数平台支持20ms的精确度 1.QObject类的定时器 QObje ...
- 查找MobileSafari WebKit revision number的方法
Mobile Safari是开源的Mac Safari的iOS版本,然而iOS WebKit并不完全开源,只公开了部分的WebCore和JavaScriptCore.有时需要知道iOS Safari的 ...
- 3TB硬盘的容量已经超出了传统分区标准的支持
为什么3TB会有接近750G空间不能用? MBR分区格式是瓶颈 其实3TB硬盘之所以会出现各种问题,关键就在于它的容量已经超出了传统分区标准的支持.传统的硬盘采用MBR分区格式,使用LBA寻址,这种寻 ...
- C++历史
C++历史 早期C++ •1979: 首次实现引入类的C(C with Classes first implemented) 1.新特性:类.成员函数.继承类.独立编译.公共和私有访问控制.友元.函数 ...