分组查询

COUNT()   SUM()  AVG()   MAX()   MIN()

范例:

统计公司的总年薪:

统计最早,最迟雇员

 

 

请解释:

"COUNT(*)  COUNT(字段)  COUNT(DISTINCT 字段 )的区别

COUNT(*)     会实际的统计表中的数量

COUNT(字段)    null字段不参与统计

COUNT(DISTINCT 字段)消除重复字段的统计

只有清楚了这个可以开始上分组统计了

什么情况下有可能分组:

分组就是某些群体具有相同的特征。

例如emp表中,job和deptno是可以分组的字段

但是一定要记住,一条记录也是可以分组的,但是没有什么实际的意义

范例:按照职位分组,统计每个职位的平均工资,以及最高工资和最低工资,人数。

 

 

 

分组函数

 

Max      min

select ename , sal from emp where sal = (select max(sal) from emp ) ;

查询工资最多的员工是谁

count

       select count(*) from emp ;      查询员工数量

sum  ave

       select avg(sal) from emp ;

       select sum(sal)/count(*) from emp ;

       算出平均工资

 

Group by 和  having

       select avg(sal) , max(sal) ,deptno from emp group by deptno ;

       显示每个部门的平均工资和最高工资。

select avg(sal) , max(sal) ,deptno , job from emp group by deptno , job  order by deptno;

       显示每个部门的每个岗位的平均工资和最高工资。

       select avg(sal) , max(sal) , deptno from emp group by deptno having avg(sal) > 2000 ;

找出平均工资低于2000的部门

 

 

总结:

  1. 分组函数只能出现在选择列表中,或者是having ,order by 中。不能当做where后面的条件语句中。
  2. 只有先有group by 才有having 再有 order by 。
  3. 选择列中一定有一个字段是根据group by 操作用的。

 

posted @ 2016-02-03 16:27  式微胡不归  阅读(154)  评论(0编辑  收藏  举报