『SQL』GROUP BY语句梳理

GROUP BY是SQL中用来进行数据分组的语句,这个语句使用时稍有不慎就会报错。

GROUP BY

  • 作用
    GROUP BY语句是将查询到的数据进行分组,分成各个区域,再对每个区域的数据进行处理。

  • 使用
    比如有一个“student”表保存了本班学生的个人信息和选修的课程等数据。

SELECT stu_name,course FROM student;

这个查询语句会返回每个同学所选的课程,有许多重复课程。

如果查看每个课程选择的人数:

SELECT course,COUNT(*) FROM student GROUP BY course;

这将返回学生选择每个课程的总和,因为ORDER BY子句依据course字段将数据按照课程名称分组,名称相同课程合并到了一组,再通过COUNT()*函数计算重复的数量,得到总和值,也就是学生数。

  • 注意
    如果这么写:
SELECT stu_name,course FROM student GROUP BY course;

就会报错!因为查出stu_namecourse两列数据后,数据库根据GROUP BY后的course字段进行分组,这样课程名相同的数据分到了一组,最后只会以一行的数据显示。
那么问题来了,stu_name字段的数据呢?这个字段并没有进行分组,也就是说该字段数据没有像course字段一样合并,问题就是在这里:数据库并不能显示出这样“一对多”的数据,同时显示合并后的course字段和未合并的stu_name字段在一行(因为一个数据格只能放一个数据)。

除了聚集语句,SELECT语句中的字段都要同时放在ORDER BY语句中!

文章内容为个人理解,如有错误欢迎指出。

邮箱:CodingDjz@126.com

点赞