【数据库】谈谈group by

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

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

group by 语法


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

SELECT COUNT(name) AS number,course FROM `groupbytest` GROUP BY course
   查询结果如下:


   这就是最简单的group by的用法。

   而我之前是这样用的:

SELECT * FROM `groupbytest` GROUP BY course
SELECT NAME,course FROM `groupbytest` GROUP BY course
   在mysql中,可以查询到结果集,如下:

 
   跟原始数据对比,可以发现,查询到的结果集是每一门课程的第一条记录,这样就丢失了一部分数据。

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

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

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

1.group by +多个列

SELECT name,sex,course FROM `groupbytest` GROUP BY sex,course
查询结果:


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

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

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

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


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


SELECT SUM(source) AS total,course FROM `groupbytest` GROUP BY course
查询结果:


4.group by 和avg函数一起使用:求每一门课程的平均值。

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

5.group by和where一起使用:

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


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



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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值