【数据库】谈谈group by[通俗易懂]

【数据库】谈谈group by[通俗易懂]【数据库】谈谈group by

大家好,又见面了,我是你们的朋友全栈君。

   前一段时间写SQL比较频繁,有时候想要用group by 来进行分组,却总是报错,今天就总结一下group by 的用法。

   group by 语句通常和合计函数一起使用,根据一个或多个列队结果集进行分组。

group by 语法

【数据库】谈谈group by[通俗易懂]

   现在我们对上面的数据进行操作:统计每一门课程选修的人数:

SELECT COUNT(name) AS number,course FROM `groupbytest` GROUP BY course

   查询结果如下:

【数据库】谈谈group by[通俗易懂]
   这就是最简单的group by的用法。

   而我之前是这样用的:

SELECT * FROM `groupbytest` GROUP BY course
SELECT NAME,course FROM `groupbytest` GROUP BY course

   在mysql中,可以查询到结果集,如下:

【数据库】谈谈group by[通俗易懂] 【数据库】谈谈group by[通俗易懂]
   跟原始数据对比,可以发现,查询到的结果集是每一门课程的第一条记录,这样就丢失了一部分数据。

   如果是在sql server中这么写是会直接报错的,大家感兴趣的话可以测试一下。

   其实group by函数是用来跟数据库的统计函数结合使用,对数据进行分组统计的。这个问题困扰了我好久,在网上看了一些介绍,自己又写了几条SQL才明白了他的用法。

   下面就为大家介绍一下group by的一些常用用法:

1.group by +多个列

SELECT name,sex,course FROM `groupbytest` GROUP BY sex,course

查询结果:

【数据库】谈谈group by[通俗易懂]

SELECT name,sex,course FROM `groupbytest` GROUP BY course,sex

【数据库】谈谈group by[通俗易懂]

   对比以上两条SQL查出来的结果集,可以看出,查询结果跟group by 后面的列的顺序是有关系的。
第一条是先根据sex进行分组,再根据course分组,而第二条是先根据course分组,再根据sex分组。

2.group by 和count函数一起使用:对学生的性别进行统计。

SELECT COUNT(*) AS number,sex FROM `groupbytest` GROUP BY sex

【数据库】谈谈group by[通俗易懂]

3.group by 和sum函数一起使用:对分数进行汇总。

【数据库】谈谈group by[通俗易懂]

SELECT SUM(source) AS total,course FROM `groupbytest` GROUP BY course

查询结果:

【数据库】谈谈group by[通俗易懂]
4.group by 和avg函数一起使用:求每一门课程的平均值。

SELECT AVG(source) AS total,course FROM `groupbytest` GROUP BY course

【数据库】谈谈group by[通俗易懂]

5.group by和where一起使用:

SELECT COUNT(*),course FROM `groupbytest` WHERE sex = '男' GROUP BY course

结果集:

【数据库】谈谈group by[通俗易懂]

SELECT COUNT(*),course FROM `groupbytest` WHERE sex = '女' GROUP BY course

结果集:

【数据库】谈谈group by[通俗易懂]

   关于group by的用法还有很多,今天就先介绍到这里。还有我是在mysql的环境下做的一些例子,在SQL server中可能会有一些差异,到时候灵活应用就好了。希望能给大家带来帮助~


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/105669.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 文本分类算法之–KNN算法的简介「建议收藏」

    文本分类算法之–KNN算法的简介「建议收藏」1、KNN算法的简介kNN算法就是找到k个最相似的样本,这些样本所在的类,就是当前文档的所属的类。如下图:绿色圆圈表示你想分类的文本,其他是已知类别的样本。图中其他形状和绿色圆圈的距离代表了相似度。如果k=3,就是取3个最相似的文本,那么1个蓝色框,2红色三角被选中,因为红色三角多,则绿色圆圈所属的类就是红色三角所在的类。如果k=5,3个蓝色框和2个红色三角选中,那么就属于蓝色框所

    2022年5月11日
    46
  • photoshop是目前图像处理理最顶级的一款软件_图片处理软件app

    photoshop是目前图像处理理最顶级的一款软件_图片处理软件app说到照片和图像编辑/操纵,真的没有更好的应用,AdobePS图象处理软件。 摄影师和创意工作室会同意这是总理的照片编辑应用期。不幸的是,PS图象处理软件还配备了一个陡峭的学习曲线和价格标签,我们必须考虑我们不会使用矫枉过正的1/3的功能包装成PS图象处理软件。 记住让我们看一些免费的在线和客户端安装的应用程序可以在互联网上看。 选项是巨大的所以我缩小了我的审查,只有最好的在线和客户端安装

    2022年4月20日
    59
  • (7)case语句[通俗易懂]

    (7)case语句[通俗易懂](1)case语法(2)多系统配置yum源(3)删除用户(4)模拟jumpserver!/bin/bashtrap""HUPINTOUITTSTPweb01

    2022年8月3日
    4
  • matlab画图操作(修改坐标轴及字体,加粗,颜色修改,适合论文画图)「建议收藏」

    matlab画图操作(修改坐标轴及字体,加粗,颜色修改,适合论文画图)「建议收藏」matlab常用画图操作1.设置坐标轴2.设置figure大小3.matlab线条设置4.子图设置5.颜色查询6.colorbar设置7.线条透明度设置8.设置坐标轴刻度形式9.图例设置1.设置坐标轴%设置坐标轴格式title(‘Title’,’fontsize’,12,’fontname’,’Times’);xlabel(‘Times(s)’,’fontsize’,12,’fontname’,’Times’)ylabel(‘Value’,’fontsize’,12,’fontname’,’Tim

    2022年9月20日
    2
  • BZOJ4567 [SCOI2016]背单词

    BZOJ4567 [SCOI2016]背单词AddressBZOJ4567洛谷P3294Solution简化下题目,对于排在第xxx个位置的串:1.若存在该串的后缀排在该串后面,该串的代价为n2n2n^2。2.若该串没有后缀,代价为xxx。3.若该串的所有后缀都排在该串前面,记最靠近该串的后缀位置为yyy,代价为x−yx−yx-y。显然只要把所有串翻转,则后缀都变成了前缀,建出Trie…

    2022年7月26日
    11
  • 获取main方法的返回值「建议收藏」

    获取main方法的返回值「建议收藏」通常main是不返回内容。但是实在要返回。也只能返回状态码给操作系统。System.exit(1);//异常System.exit(0);//正常当然也可以定以很多其他用于表示不同状态。至于如何从操作系统中取得这些状态码:Linux:echo$?  上一个执行命令之后的返回状态码Windows:要在windows系统下查看状态,键入C:direct

    2022年5月18日
    92

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号