select和group by的使用


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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM