MySQL--Group By和Having与Where

参考:

如何通过navicat查看建表语句和创建函数语句

Navicat for MySQL怎样执行SQL语句呢

navicat导入.sql文件

MySQL--------大于小于比较问题

MySQL运算符和函数

“Group By”从字面意义上理解就是根据“By”指定的规则对数据进行【分组】,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理。

group by是分组
一般配合max、min、sum、avg、count这五个统计函数来使用

max:求最大
min:求最小
sum:求总和
avg:求平均
count:求总行数

创建test表,并插入数据

create table test(
  类别 varchar(5) not null ,
  数量 int(5) ,
  摘要 varchar(10) not null
);

insert into test values('a',5,'a2001');
insert into test values('a',2,'a2002');
insert into test values('b',9,'b2003');
insert into test values('b',6,'b2004');
insert into test values('b',3,'b2005');
insert into test values('c',9,'c2006');
insert into test values('c',9,'c2007');
insert into test values('c',8,'c2008');
insert into test values('c',7,'c2009');
insert into test values('a',3,'a2000');

在这里插入图片描述

按类别分组,计算数量

select 类别, sum(数量) as 数量之和
from test
group by 类别;

在这里插入图片描述

按类别分组,计算数量并排序(降序)

select 类别, sum(数量) AS 数量之和
from test
group by 类别
order by sum(数量) desc;

在这里插入图片描述

按类别分组,计算平均值

select 类别, avg(数量) AS 平均值 from test group by 类别;

在这里插入图片描述

按类别分组,计算引用次数

select 类别, count(*) AS 记录数 from test group by 类别;

在这里插入图片描述

按类别分组(group by),计算数量,然后再次过滤(having)

select 类别, sum(数量) as 数量之和 from test
group by 类别
having sum(数量) > 18;

在这里插入图片描述
Having与Where的区别:
where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。
having 子句的作用是筛选满足条件的组,即在【分组之后过滤数据】,条件中经常包含【聚组函数】,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组。

按类别分组(group by),计算数量(where过滤),然后再次过滤(having)

select 类别, sum(数量) as 数量之和 from test
where 数量 < 8
group by 类别
having SUM(数量) < 10;

在这里插入图片描述

过滤(where)

select * from test where 数量 > 8;

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值