您的位置:首页 > 数据库 > MySQL

mysql中group by 分组函数详解 及 查询总结

2019-02-15 00:14 1066 查看

官方定义:

分组: 按照某一列或者某几列。把相同的数据,进行合并输出。
完整写法:
select … from … group by 列名,列名

注意:
1、聚合函数:分组之后进行计算;
2、通常 select后面的内容是被分组的列,以及聚合函数;
分组有一个特点:
一旦使用了分组函数,那么最终在显示的时候,只能显示被分组的列或者聚合函数。

group by 与 having 的用法

在sql语句中的where 后面不允许添加聚合函数,添加就会报错。

关于 having 的用法解释:
表示分组之后的条件,在having后面可以书写聚合函数。
having和group by 一起使用,having和where的用法一模一样,where怎么使用having就怎么使用,where不能使用的,having也可以使用,比如说where后面不可以使用聚合函数,但是在having后面是可以使用聚合函数的。

where 与 having 的区别

1、having 通常与group by 分组结合使用。 where 和分组无关。
2、having是从筛选出来的字段再筛选,而where是从数据表中的字段直接进行的筛选的。
3、where 后面的条件可以写在having 中,但是 having中的条件不一定能写在where中。
having 可以书写聚合函数 (聚合函数出现的位置: having 之后)
例如having中的 聚合函数(count,sum,avg,max,min),是不可以出现where条件中。
4、where 是在分组之前进行过滤的。having 是在分组之后进行过滤的。

查询总结:

Count(字段) 作用 统计个数
Sum(字段) 作用 求和运算
Avg(字段) 作用 求平均值
Max(字段) 作用  求最大值
Min(字段) 作用 求最小值
Group by 作用  分组查询
Having 作用  关联条件 与where一样  只是支持聚合函数的使用!!!
查询关键字的出现的顺序是固定的

select …要显示的内容.. from …表名.. where  条件…. group by …分组的列 …having …分组后的条件… order by …排序

select …5… from …1..  where …2.. group by ..3…having ..4… order by .6.

查询的执行顺序:
1)from : 表名
2)where:条件过滤
3)group by : 分组
4)having : 分组之后进行过滤。
5)select :执行完毕之后,显示内容。
6)order by : 根据查询的内容进行排序输出.
from 表名

where 条件:
逻辑运算符:and or not
比较运算符:> < >= <= <> = !=
在....之间:between...and
in():	只要在in(值1,值2...)满足任意一个值就可以 类似java switch
模糊匹配:like %任意个 _一个字符
is null/is not null

group by 列:对列进行分组。

having 条件:
逻辑运算符:and or not
比较运算符:< > <= >= <> =
在....之间:between...and...
in(set)
is null/is not null
模糊匹配:like % _
Having 后 可以跟聚合函数 不使用聚合函数用where
聚合函数(sum,avg,max,min,count)
Where跟的条件 having都可以  而且 having还可以跟 聚合函数 where不可以  having单独使用的时候的条件在查询中的字段必须包含!!!

order by desc(降序)/asc(升序,默认)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: