SQL分组统计查询

分组统计查询

20171113

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值