『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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,898评论 18 399
  • 50个常用的sql语句Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname...
    哈哈海阅读 4,979评论 0 7
  • 21年的时光,是什么。 21个春夏秋冬…252个月…7665个日日夜夜…183960个小时…11037...
    顾锦妍阅读 2,828评论 0 0
  • 四大名著,红楼写情,水浒写义,三国写争,西游写悟。下面这60句动人的话,出自不同的故事、人物和情境。抛开这些具体,...
    寻墨雨清扬阅读 1,449评论 0 4
  • Determining Whether a Crash Report is Symbolicated(决定是否符号...
    helinyu阅读 5,288评论 0 1