10.SQL之分组查询

一、GROUP BY基础

使用GROUP BY字句可以像切蛋糕那样将表分割。通过使用聚合函数和GROUP BY字句,可以根据某一列的分类将表分割后再进行汇总

# 基本语法
select <列名1>,<列名2>,<列名3>,... from <表名> group by 
<列名1>,<列名2>,<列名3>,...
# 实例
select product_type,count(*) from product group by product_type;

在这里插入图片描述
这样,GROUP BY 子句就像切蛋糕那样将表进行了分组
在这里插入图片描述
注:

  • GROUP BY必须写在WHERE语句的后面

  • GROUP BY和WHERE并用时,SELECT语句的执行顺序:FROM->WHERE->GROUP BY->SELECT

    • 先通过FROM选中表
    • 再用WHERE做条件,筛选出符合条件的数据
    • 然后通过GROUP BY选中的列分组
    • 最后用SELECT查询出结果
  • 当聚合键中包含NULL时,NULL也算一种类别,会被表现出来
    在这里插入图片描述

二、为聚合结果指定条件(HAVING)

WHERE子句只能指定记录(行)的条件,而不能用来指定组的条件

想要对分组后的每组进行条件指定需要使用HAVING语句,其语法与WHERE语句相似,但是其必须跟在GROUP BY语句之后,执行顺序也是先执行完GROUP BY再执行HAVING。

# 语法形式
select <列名1>,<列名2>,... from <表名> where <行的筛选条件> 
group by <列名1>,<列名2>,... HAVING <组的筛选条件>
# 实例,如无需使用where可以省略
select product_type,count(*) from product 
group by product_type having count(*) = 2;

总结:

  • 聚合函数可以用在SELECT字句、HAVING字句和GROUP BY字句中使用
  • HAVING字句要跟在GROUP BY之后
  • WHERE子句用来指定数据行的条件,HAVING子句用来指定分组的条件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值