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


相关推荐

  • idea配置javaweb开发环境_你没有创建该项目的权限

    idea配置javaweb开发环境_你没有创建该项目的权限IDEA分为社区版和企业版,区别在于,社区版免费,企业版收费,但有30天免费使用期,到期后会提示你进行激活,花钱买实在太贵,可以去淘宝买激活码或使用工具。IDEA官方下载地址https//www.jetbrains.com/idea/download/#section=windows。本文教给各位使用IDEA创建web项目,配置tomcat进行访问,好了,下面进入正题。以本地tomcat方式启动。以DeBug方式启动项目。…

    2026年1月30日
    5
  • Linux vim退出命令(保存与不保存)「建议收藏」

    Linux vim退出命令(保存与不保存)「建议收藏」按ESC键跳到命令模式,然后输入::w-保存文件,不退出vim:wfile-将修改另外保存到file中,不退出vim:w!-强制保存,不退出vim:wq-保存文件,退出vim:wq!-强制保存文件,退出vim:q-不保存文件,退出vim:q!-不保存文件,强制退出vim:e!-放弃所有修改,从上次保存文件开始再编辑…

    2022年6月14日
    132
  • virsh查看虚拟网络信息_kvm创建虚拟机

    virsh查看虚拟网络信息_kvm创建虚拟机1.virsh查看/管理虚拟机问题本案例要求熟悉KVM虚拟化的virsh管理工具的的基本使用,从命令行来操作虚拟机,完成以下基本任务:1)查看KVM服务器信息2)列出有哪些虚拟机、指定虚拟机的状态3)基本的开关机操作4)将虚拟机设置为自动运行方案virsh命令行管理的常见用法:1)virsh:直接进交互模式2)virshnodeinfo:查看KVM节点(服务器)信息3…

    2022年8月12日
    24
  • 猫学习IOS(五岁以下儿童)UI之360其他下载管理器广场UI

    猫学习IOS(五岁以下儿童)UI之360其他下载管理器广场UI

    2022年1月14日
    61
  • 架构 Roadmap 笔记分享 (2015 年)

    架构 Roadmap 笔记分享 (2015 年)

    2021年11月24日
    53
  • ttl电平与rs232电平转换电路(232电平定义)

    1RS232接口简介RS232接口又称DB9接口,是现在主流的串行通信接口之一。由于RS232接口标准出现较早,难免有不足之处,主要有以下四点:1)接口的信号电平值较高,易损坏接口电路的芯片,又因为与TTL电平不兼容故需使用电平转换电路方能与TTL电路连接。 2)传输速率较低,在异步传输时,波特率为20Kbps;3)接口使用一根信号线和一根信号返回线而构成共地的传输形

    2022年4月18日
    66

发表回复

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

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