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( ...
随机推荐
- Vmware linux 安装 Vmware Tools 提示只读
在Vmware 虚拟机里安装完linux ,安装Vmware Tools,的时候会提示只读问题,是因为在安装 Vmware Tools 使用的是光盘挂在,光盘为只读文件,所以没有办法再光盘上直接的解压 ...
- 【Demo 0006】Java基础-类多态性
本章学习要点: 1. 了解Java多态特性; 2. 掌握Java多态的实现: 一.多态特性 1. 定义: 指同一个对象调用相同的方法实现 ...
- uva 11212
非原创!!! 原作者地址:http://www.hardbird.net/?p=238
- uva 10603
紫皮书的例题 照着敲了一遍,非原创 大题思路主要是三杯水,而水的总数是知道的,相当于知道第一第二杯水的体积,第三杯水的体积也就确定了. 用第一第二杯水的体积来标记数组是否遍历过 优先队列来找移动体积最 ...
- 简单的ajax获取json
一个DBhelper类,用来操作数据库 using System; using System.Collections.Generic; using System.Linq; using System. ...
- 被忽视的META标签之特效
在web设计中使用js可以实现很多的页面特效,然而很多人却忽视了HTML标签中META标签的强大功效,其实meta标签也可以实现很多漂亮的页面过渡效果. META标签是HTML语言HEAD区的一个辅助 ...
- Jexus + Kestrel 部署 asp.net core
结合Jexus + Kestrel 部署 asp.net core 生产环境 ASP.NET Core 是微软的全新的框架.这一框架的目标 ︰ 跨平台 针对云应用优化 解除 System.Web 的依 ...
- Revit二次开发之绘制钢筋
第一次在博客园上写东西,也不知道该写些什么,我想就写点最近项目到遇到的问题吧. 最近在做一个小项目,具体需求大概是在一个revit模型中的对应的楼板位置绘制钢筋. 由于刚接触Revit二次开发,之前也 ...
- 使用wireshark常用的过滤命令
使用wireshark常用的过滤命令 方法/步骤 过滤源ip.目的ip.在wireshark的过滤规则框Filter中输入过滤条件.如查找目的地址为192.168.101.8的包,ip.dst==19 ...
- uva 11475 - Extend to Palindrome(KMP)
option=com_onlinejudge&Itemid=8&category=506&page=show_problem&problem=2470" ta ...