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


相关推荐

  • SpringCloudAlibaba开发的大型电商项目附视频源码

    SpringCloudAlibaba开发的大型电商项目附视频源码

    2020年11月14日
  • 数据库:视图和索引

    数据库:视图和索引目录一、视图1.什么是视图?2.为什么使用视图?3.如何使用视图?二、索引1.什么是索引?2.为什么使用索引?2.如何使用索引?(创建、删除)3.适用场景有哪些?4.注意事项有哪些?一、视图1.什么是视图?视图是一张虚拟表,并不在数据库中以存储数据值集的形式存在。在引用过程中依据基表动态生成。2.为什么使用视图?安全:有的数据是需要保密的…

    2022年7月22日
  • 软件设计——UML类图详解「建议收藏」

    一:UML类图思维导图 思维导图地址:http://naotu.baidu.com/file/df1cb03489378d2a541d3d8d181399da?token=2eb1feb8006fa607 密码:33bZ二:详细分析和介绍下面就从上面的思维导图开始,详细的介绍UML类图! 在讲解之前请看关系线条图(一定要牢记): 1、 什么是UML,概念是什么? 统一建模语言

    2022年2月25日
  • 解决修改JAVAHOME后java版本不改变问题[通俗易懂]

    网上有很多解决的方法,其中删除C:\Windows\System32文件下java相关联的exe文件即可,使用wherejava命令可以发现,在Javahome配置版本之前有两个或三个java可执行文件,因此删除这个干扰项就可以解决。java版本问题unsupportedmajor.minorversion51.0jdk1.7版本错误,可能项目是1.7,运行环境是1.6unsup…

    2022年4月9日
  • vue生成二维码并保存图片_vue扫码登录

    vue生成二维码并保存图片_vue扫码登录传送门

    2022年10月4日
  • 如何判断二极管的极性_二极管的反向饱和电流

    如何判断二极管的极性_二极管的反向饱和电流三极管饱和状态的判断比如上图如何判断电路正常状态下(麦克风无声音)Q1饱和而不是Q2饱和?首先看Q1:因为R2=100R3所以电流的话R3是100倍的R2,但是8050放大系数是200倍以上,说明此时三极管已经无力再放大这个基极电流了,三极管处于饱和状态而后边Q2R3是R4的30倍左右,很明显电流的话根本就用不上HFE放大系统,处于截止状态…

    2022年9月11日

发表回复

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

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