什么是分组查询?

    1. 在实际应用中,可能有这样的需求,需要先进行分组,然后对每一组数据进行操作
    2. 这个时候需要使用分组查询
    语法:
    select
    ...
    from
    ...
    group by;
    
    关键字组合,看一下他们的执行顺序
    select
        ...
    from
        ...
    where
        ...
    group by
        ...
    order by
        ...
    
    以上关键字的顺序不能颠倒
    执行顺序:
        1.from
        2.where
        3.group by
        4.select
        5.order by
    
    为什么分组函数不能直接使用在where后面?
        select id,name,age from info where age > min(age);//报错
        因为分组函数在使用的时候必须先分组之后才能使用
        where执行的时候还没有分组,所以where后面不能出现分组函数
    
    select sum(age) from info;
    为什么这个没有分组可以用?
        因为select在group by后面执行
    

    image.png

    重点结论:
    在一条select语句当中,如果有group by语句的话,
    select后面只能跟:参加分组的字段,以及分组函数
    其他的一律不能跟
    

    image.png

    image.png

    使用having可以对分完组之后的数据近一步过滤,having不能单独使用,having不能代替where,having必须和group by联合使用

    image.png

    总结:
    select
        ...
    from
        ...
    where
        ...
    group by
        ...
    having
        ...
    order by;
    
    以上关键字只能按照这个顺序写,不能颠倒
    
    执行顺序:
        1.from
        2.where
        3.group by
        4.having
        5.select
        6.order by
    
    从某张表中查询数据,
    先经过where条件筛选出有价值的数据
    对这些有价值的数据进行分组
    分组之后可以使用having继续筛选
    select查询出来
    最后排序输出
    

    image.png