首页 > 其他 > 详细

select和group by的使用

时间:2020-05-10 18:30:26      阅读:56      评论:0      收藏:0      [点我收藏+]

1.group by概述:

简单的来说: 将数据库的数据用‘by‘后面接的规则进行分组,即将一个大数据库分成一个个相同类型数据在一起的小区域。

2.group by的语法:

select column_name,function(column_name) //此处的function()函数是指SQL中的一些聚合函数,例如: MAX(),MIN(),SUM(),AVG(),COUNT()等
from table_name where column_name operator value //where条件语句
group by column_name;//以某一列分组

3.group by实例操作:

原表: 在此处就叫做call_task表吧

技术分享图片

 

 group by正确的进入方法:

select is_pause,pause_type,count(stu_id)
from call_task
where is_pause=1
group by is_pause,pause_type

语句整个的意思就是从call_task这个表中,先筛选出满足is_pause=‘1‘这个条件的所有数据,然后又对这些数据按照is_pause和pause_type这两个字段分组,最后将is_pause、pause_type和学生总人数展示在结果集中。

上面语句执行后结果如下图展示:

技术分享图片

 

 group by错误打开方式:

select is_pause,user_id,pause_type,count(stu_id)
from call_task
where is_pause=1
group by is_pause,pause_type    //在分组中并没有user_id这个字段

我们先看结果再来分析原因:

技术分享图片

 

 大家可以对比原数据库数据,很快会发现虽然pause_type和学生总数这两栏数据没有问题,但是user_id那一栏明显不对。为什么会出现这种情况? ? ?因为我们在分组的时候只把is_pause和pause_type这两个字段当做分组条件,所以SQL只会对原数据库中的这两列的数据进行分组操作,其他列并不会参与到这个分组过程中(注意! ! !),但是显示结果集时你非要让它显示没有进行分组的列,当然数据库就会出现错误啦。其实数据库在这里也是很纠结的,因为user_id存在多个情况,它也不知道要显示哪个user_id,最后它采取的方式是选取满足where和分组条件出现的第一组数据的user_id。

4.group by和select的一些总结:

如果在有group by操作中,select后面接的结果集字段只有两种: 要么就只有group by后出现的字段,要么就是group by后出现的字段 + 聚合函数的组合(常用的五种聚合函数: min()求列中最小数值 , max()求列中最大数值 , avg()求平均值 , sum()求列中字段对应数值的总和 , count()求列的总条数 )

 

文章来源: https://blog.csdn.net/Liting_Peng/article/details/80887706

select和group by的使用

原文:https://www.cnblogs.com/xmc-ccz/p/12864237.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!