group by
    作用 用于给数据分组
    为什么要分组?  思考生活为什么要分组
    1.在生活中是为了方便管理
    2.在数据库中是为了 方便统计
    准备数据
    create table emp (id int,name char(10),sex char,dept char(10),job char(10),salary double);
    insert into emp values (1,"刘备","男","市场","总监",5800),
     (2,"张飞","男","市场","员工",3000),
      (3,"关羽","男","市场","员工",4000),
       (4,"孙权","男","行政","总监",6000),
        (5,"周瑜","男","行政","员工",5000),
         (6,"小乔","女","行政","员工",4000),
          (7,"曹操","男","财务","总监",10000),
           (8,"司马懿","男","财务","员工",6000);
     按照部门给数据分组
     select *from emp group by dept;
     有两种情况
     1.sql_mode中 没有设置 ONLY_FULL_GROUP_BY 显示每个组的第一条记录 没有意义 所以新版中 自带ONLY_FULL_GROUP_BY
     2.sql_mode中有设置 ONLY_FULL_GROUP_BY  直接报错
        原因是:  * 表示所有字段都要显示  但是 分组后 记录的细节被隐藏 只留下了
        这意味着:只有出现在group by 后面的字段才能被显示
        分组是为了统计分组数据  如何统计?
        需要使用到聚合函数
聚合函数:
    将一堆数据经过计算,得到一个数据
    sum() 求和
    avg() 求平均数
    max()/min() 求最大值 / 最小值
    count() 个数
2.查询每个部⻔门有⼏几个⼈人
select dept,count(*) from emp group by dept;
3.计算每个部⻔门的平均⼯工资
select avg(salary) from emp  group by dept;
总结 什么时候需要使用分组   只要你的需求中 带有 每个这样的字眼 就需要分组
    每个岗位  每个部门  每个性别
5.查询平均⼯工资⼤大于5000的部⻔
    select avg(salary) from emp where avg(salary) > 5000 group by dept;
    where 语句后面 不能使用聚合函数
    select avg(salary) from emp;
    总结where 条件不能用于筛选分组后的数据
    group_concat 用于分组后 将组中的某些字段拼接成字符串
    select  dept,group_concat(name) from emp group by dept;
    其实 没啥意义  为啥?  你为什么要分组?是为了统计数据    如果你不需要统计 就没有必要分组