我们在生活中会碰到不少分组的情况,比如常见的根据性别来分组,男的一组,女的一组,所以在SQL中也可以对数据进行分组,这样可以更加便利的操作数据
1.Group By 语句
Group By 从字面意义上理解就是根据“By”指定的条件对数据进行分组,所谓的分组就是将一个“数据集” 划分成若干个“小区域”,然后针 对若干个“小区域”进行数据处理,你也可以想象成将数据分成多个集合。 以下是 GROUP BY 子句的语法:
Select T1.ID from Table T1
Group By T1.ID
上面的意思就是根据T1表中相同的ID来分组,假设T1中有1,2,1,4这四个数据,那就是分成三组,1,2,4
2.聚合函数
GROUP BY 子句通常与聚合函数一起用于统计数据。聚合函数对组执行计算并返回每个组的唯一值。例如,COUNT()函数返回每个组中的行数。其他常用的聚合函数是:SUM(),AVG(),MIN(),MAX()。 GROUP BY 子句将行排列成组,聚合函数返回每个组的统计量(总数量,总和,平均值,最小值,最大值等)。
不过要注意,当使用Group By 时,选择列表只能写Group By的条件或者是聚合函数,否则就会报以下错误
就拿1中的语法来说,给你演示错误的
Select T1.Name from table T1
Group By T1.ID
因为是以ID来分组,所以选择列表T1.Name是不行的,正确的是
Select T1.ID,Count(*) from table T1
Group By T1.ID
返回的是这个ID一共有多少行
3.Having 子句
这个的作用就是筛选数据,类似于Where,但在Group By中Where子句会受到限制,所以就用Having子句,语法:
Select T1.ID from table T1
Where T1.Age > 30
Group By T1.ID
Having Sum(T1.Money)>30000
首先筛选出年龄大于30的(where可以用在Group By前面,但不可以用在后面),根据ID分组,再筛选钱大于30000的