欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SQL分组统计查询教程

程序员文章站 2022-06-16 14:28:47
分组统计查询 2017年11月13日 20:36 统计函数 统计个数:count(* | [distinct]字段) --count(*):明确地返回表中的数据个数,是最准确的。 --count(字...

分组统计查询

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],…,…