分组查询

来源:互联网 发布:淘宝刚买完就降价了 编辑:程序博客网 时间:2024/05/14 10:30
 分组查询
    1.分组函数     select avg(salary) from s_emp;
     select count(2) from s_emp;  记录2次
     select sum(2) from s_emp;
     select sum(salary*(1+0.2) from s_emp;
     select count(distinct name) from s_emp;以名字记录
    2.分组查询
      分组的注意事项:
 select 列表要不出现在group by中,要么出现在字段 
     select manager_id from s_emp from group by manager_id;
     select manager_id,count(id) from s_emp group by manager_id;函数不能出现在分组中
    3.分组与分组函数的使用
3.1 关联中使用分组
            打印部门名称与部门员工数
       select name,count(s_emp.id) from s_emp,s_dept
         where s_emp.id=s_dept.id
         group by name;
   select region.name,count(s_dept.id) from s_dept,s_region
   where s_dept.region=s_region.id
   group by s_region.name
   select r.name,count(e.id)
     from s_region r,s_dept d,s_emp e
   where r.id=d.region_id and d.id=e.id
   group by r.name;
           查询什么,从那查询,查询的关联,是否分组
3.2 在select中可以使用分组函数,在where中可以使用吗
不可以
    对分组怎么过滤
    having过滤 紧跟group by
   select d.name,avg(e.salary)
   from s_dept d,s_emp e
   where d.id=e.dept_id
   //and avg(salary)>1000 错误!
   group by d.name
   having avg(salary)>1000;
   
总结:
     select 查询内容
     from   哪里查询
     where  关联关系
      and|or|not过滤条件
     group by 分组方式
     having   分组过滤
     order by 排序
0 0
原创粉丝点击