Group by是根据一个或多个列对结果集进行分组,该语句要结合聚合函数。
使用group by的前提是我们要知道什么是聚合函数。
聚合(aggregate)函数计算从列中取得的值,返回一个单一的值。
聚合函数:
Avg()-返回平均值
语法:select avg(SELECT AVG(column_name) FROM table_name)
Count()返回行数(null不计入)
语法:SELECT COUNT(column_name) FROM table_name;
First() 返回第一个记录的值
语法:SELECT FIRST(column_name) FROM table_name;
Last()返回最后一个记录的值
语法:SELECT LAST(column_name) FROM table_name;
Max()返回最大值
语法:SELECT MAX(column_name) FROM table_name;
Min() 返回最小的值
语法:SELECT MIN(column_name) FROM table_name;
Sum()返回总数
语法:SELECT SUM(column_name) FROM table_name;
Group by语法:
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
下面是简单的group by 语句的实例:
下表是选自某校的学生表(student)
查询学号为“s001”的学生信息
因此我们要这样子写:
温謦提示:
如果我们用到group by语句,所选列表中的列一定要包含在group by 子句中。
执行sql语句的结果
下面是带有聚合函数的 group by实例:
下表是选自某校的成绩(sc)
查询平均成绩大于60 分的同学的学号和平均成绩:
实例:
执行以上SQL输出结果如下:
此时我们可以看出:
Where关键字是不可以与聚合函数一起使用的。这个时候我们就得用到having
Having 子句可以让我们筛选分组后的各组数据、
实例:
执行以上SQL输出结果如下:
最后可以总结出:
如果我们要使用聚合函数就一定要用到group by语句,而且不能用where子句作为筛选
条件,通常用having字句。并且在使用group by的时候,所选表中的列一定要包含在group by 子句中,不然会报错。