【数据库】谈谈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中可能会有一些差异,到时候灵活应用就好了。希望能给大家带来帮助~


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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 打回来

    打回来

    2021年12月31日
  • 逆向 Framework.jar

    逆向 Framework.jar

    2021年12月15日
  • 1100000/1011模二除法_四位数除以两位数的除法算式

    1100000/1011模二除法_四位数除以两位数的除法算式原题链接这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由1组成的数字,比如1、11、111、1111等。传说任何一个光棍都能被一个不以5结尾的奇数整除。比如,111111就可以被13整除。 现在,你的程序要读入一个整数x,这个整数一定是奇数并且不以5结尾。然后,经过计算,输出两个数字:第一个数字s,表示x乘以s是一个光棍,第二个数字n是这个光棍的位数。这样的解当然不是唯一的,题目要求你输出最小的解。提示:一个显然的办法是逐渐增加光棍的位数,直到可以整除x为止。但难点在于,s可能是个非常大的数 ——

  • 二叉树性质的性质及证明整理

    二叉树性质的性质及证明整理——整理于2020.4.29二叉树的性质及证明性质1:在二叉树的第i层上至多有2(i-1)个结点(i>=1)证明:数学归纳法(1) i=1时只有一个根节点。显然2(i-1)=20=1是对的(2) 假设对所有的j,1<=j<i,命题成立,即第j层上至多有2(j-1)个结点(3)由归纳假设可得:第i-1层上至多有2(i-2)个结点。由于二叉树…

  • java gb2312中文乱码_Java中文乱码问题(转)

    java gb2312中文乱码_Java中文乱码问题(转)大家在JSP的开发过程中,经常出现中文乱码的问题,可能一至困扰着大家,现把JSP开发中遇到的中文乱码的问题及解决办法写出来供大家参考。首先了解一下Java中文问题的由来:Java的内核和class文件是基于unicode的,这使Java程序具有良好的跨平台性,但也带来了一些中文乱码问题的麻烦。原因主要有两方面,Java和JSP文件本身编译时产生的乱码问题和Java程序于其他媒介交互产生的乱码问题。…

  • Select multiple多选上移、下移

    Select multiple多选上移、下移

    2021年10月17日

发表回复

您的电子邮箱地址不会被公开。

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