组函数(avg(),sum(),max(),min(),count())、多行函数,分组数据(group by,求各部门的平均工资),分组过滤(having和where),sql优化 .
来源:互联网 发布:古墓丽影9n卡优化补丁 编辑:程序博客网 时间:2024/05/16 15:01
1组函数 avg(),sum(),max(),min(),count()案例:
selectavg(sal),sum(sal),max(sal),min(sal),count(sal)
from emp
/
截图:
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;
运行结果:
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;
方法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优化
- 组函数(avg(),sum(),max(),min(),count())、多行函数,分组数据(group by,求各部门的平均工资),分组过滤(having和where),sql优化 .
- 聚合函数(sum、count、max、min、avg)、where、group by、having的组合用法实例
- SQL 查尋(分组/group by/count/sum/avg/max/min/null/having/top/over) 排序(rwo_number/rank/dense_raenk/ntile)
- linq to sql (Group By/Having/Count/Sum/Min/Max/Avg操作符)
- 聚合函数和分组(sum(),count(),group by having)
- group by与avg(),max(),min(),sum()函数的关系
- 多行函数(sum,count,avg,having和where的区别)
- 【SQL】分组数据,过滤分组-group by , having
- mysql中group by子句和聚合函数MAX(),MIN(),SUM(),AVG()等的使用
- Postgresql中的分组函数(group by 和 having)
- Oracle: 对数据分组(max,min,avg,sum等)的想法
- 分组函数+group by + having
- SQL---DML---聚集函数AVG(),COUNT(),SUM(),MAX(),MIN()的使用
- 数据库中Having放在分组函数group by后过滤查询组
- oracle学习笔记(二)substr,nvt,max,min,avg,sum,count,group,having
- SQL 分组函数 group by
- 对group by的结果集进行分组过滤 where 与 having 用法的区别
- javascript 错误 "Uncaught TypeError: string is not a function"
- jvm原理
- RestClient(Restsharp) ContentType setting and HttpBaseAuth setting tricky.
- oracle sql语句实现累加、累减、累乘、累除
- Oracle临时表GLOBAL TEMPORARY TABLE
- 组函数(avg(),sum(),max(),min(),count())、多行函数,分组数据(group by,求各部门的平均工资),分组过滤(having和where),sql优化 .
- 使用json解析国家气象局(天气预报)接口数据
- docker 实战---使用oracle xe作为开发数据库(六)
- Autoboxing and Unboxing
- 施密特给年轻职场人士的建议:跟随懂科技的公司
- 矩阵求导
- MT7601官方linux驱动内存泄漏的BUG
- 变长数组在Linux USB当中的应用
- IOS疑难杂项录