【数据库】谈谈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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • goland 2022.01 激活码_最新在线免费激活2022.03.02

    (goland 2022.01 激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年4月2日
    278
  • docker 开放 2375端口

    docker 开放 2375端口背景:centos7.8vi/usr/lib/systemd/system/docker.service修改[Service]的ExecStart,增加-Htcp://0.0.0.0:2375[Service]Type=notify#thedefaultisnottousesystemdforcgroupsbecausethedelegateissuesstill#existsandsystemdcurrentlydoesnotsupport

    2022年6月9日
    91
  • 对角矩阵单位矩阵_矩阵乘单位矩阵等于

    对角矩阵单位矩阵_矩阵乘单位矩阵等于importnumpyasnp'''创建矩阵''''''创建矩阵:2维数组'''

    2022年8月6日
    8
  • 学习 node.js 第八天:Socket 通讯「建议收藏」

    学习 node.js 第八天:Socket 通讯「建议收藏」一般来讲,HTTP是基于文本的“单向”通讯机制。这里所谓的“单向”,乃相对于“双向”而言,因为HTTP服务器只需根据请求返还恰当的HTML给客户端即可,不涉及客户端向服务端的通讯。这种单向的机制比较简单,对网络质量要求也不高。而更多的场景则是需要可靠、稳定的端到端连接。一般这种服务是实时的、有态的而且是长连接,长连接则暗示两段须达致相向通讯的能力,也就说是服务端客户端两者间能够实时地相互间通信。毫无疑问,能够实时通信的服务器正是我们对服务器基本要求之一。区别于HTTP服务器以HTTP为通讯

    2022年6月11日
    52
  • 嵌入式开发之mipi协议基础学习

    嵌入式开发之mipi协议基础学习MIPI——Mobileindustryprocessinterface多家移动开发或者应用商共同筹划接口标准联盟节约成本,加快产品开发速度内容丰富,显示、照相机、电源管理、射频、存储接口等等CIS(cmosimagesensor)中仅用到了mipi协议中的csi-2(cameraserialinterface二代,标识生成要求)和D-phy

    2022年5月24日
    36
  • 解决肚子胀气最快方法_gpt异常是什么意思

    解决肚子胀气最快方法_gpt异常是什么意思apt-keyadv–keyserverkeyserver.ubuntu.com–recv-keysD45DF2E8FC91AE7E

    2022年10月13日
    6

发表回复

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

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