SQL分组统计查询教程
分组统计查询
2017年11月13日
20:36
统计函数
统计个数:count(* | [distinct]字段)
--count(*):明确地返回表中的数据个数,是最准确的。
--count(字段):不统计为null的数据个数。
--count([distinct]字段):统计消除重复数据后的数据个数。
max(字段)、min(字段)
sum(字段)、avg(字段)
分组统计查询
分组是部分数据具有共性。
分组子句group by
group by 分组字段,分组字段
select job,count(empno),avg(sal)
from emp
group by(job) ;
分组操作存在严格的限制
1、在没有编写group by子句的时候,那么select子句之中只允许出现统计函数,不允许出现任何的其他字段。
错误代码 |
正确代码 |
select count(empno),ename from emp ; |
select count(empno) from emp ; |
2、在使用group by子句分组字段的时候,select子句中只允许出现统计函数和分组字段
select job,count(empno),ename from emp group by job ; |
select job,count(empno) from emp group by job ; |
3、统计函数允许嵌套查询,但是嵌套后的统计查询中,select 子句里面不允许再出现任何的字段,包括分组字段,只能够使用嵌套的统计函数。
select deptno,max(avg(sal)) from emp group by deptno ; |
select max(avg(sal)) from emp group by deptno ; |
selectd.deptno,d.dname,d.loc,count(e.empno),trunc(avg(months_between(sysdate,hiredate)/12))year
from dept d,emp e
where d.deptno = e.deptno(+)
group by d.deptno,d.dname,d.loc ;
having子句对分组后的数据筛选
【⑤确定要显示的数据列】select [distinct] 分组字段[别名],…| 统计函数
【①确定要查找的数据来源】from
【②针对数据进行筛选】where 条件
【③针对数据进行分组】group by 分组字段,分组字段,….
【④对分组后的数据筛选】having 条件
【⑥对返回结果排序】order by 字段 [asc | desc],…,…
推荐阅读
-
浅谈SQL Server中统计对于查询的影响分析
-
SQLserver 实现分组统计查询(按月、小时分组)
-
Sql Server 分组统计并合计总数及WITH ROLLUP应用
-
Sql Server:多行合并成一行,并做分组统计的两个方法
-
thinkphp区间查询、统计查询与SQL直接查询实例分析
-
分组查询GROUP BY的使用与SQL执行顺序的讲解
-
Sql_从查询的结果集中分组后取最后有效的数据成新的结果集小记(待优化)
-
sql多表查询分组最大值
-
每日学习心得:SQL查询表的行列转换/小计/统计(with rollup,with cube,pivot解析)
-
SQL Server温故系列(5):SQL 查询之分组查询 GROUP BY