group by和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和学生总人数展示在结果集中。(这个过程就是一个将原数据库按照条件不断筛选最后得到我们需要的一个小的数据库的过程。这里面又会牵扯到一个sql语句执行顺序的问题,详细情况请看SQL执行顺序和SQL别名问题)。

上面的语句执行之后得到的结果数据集如下图所示:

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()求列的总条数)
其实分组的思想很简单:就拿上面例子来说,把分组条件想成一个二维数组,满足这个数组就将个数加1。(is_pause,pause_type)就是一个简单的二维数组,结合筛选条件和数据库中的数据来看,(is_pause,pause_type)就分成下面三种情况:(1,2),(1,4),(1,5),遇到满足数组情况的count(stu_id)数值加1。同理,如果你的分组条件是3个,4个或者更多,就按照这个思路想,也不会晕菜。

转载 : https://blog.csdn.net/liting_peng/article/details/80887706

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
GROUP BY子句用于根据指定的列对查询结果进行分组。它在SELECT语句中的第5阶段被处理,并且其基本语法如下:GROUP BY column-expression [ ,...n ],其中column-expression表示分组列。 SELECT子句用于指定要查询的字段列表,它是SELECT语句的第一个阶段。在SELECT子句中,我们可以使用聚合函数对数据进行计算,但是不允许将聚合函数与其他列字段同时出现在一个SELECT查询列表中。 总的语法顺序为: 1. SELECT [字段列表] 2. FROM [表名] 3. WHERE [条件] 4. GROUP BY [列] 5. HAVING [筛选条件] 6. ORDER BY [列] 这是一个select语句的执行顺序,GROUP BY子句在第4个阶段被处理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [分组原理(GROUP BY子句)1:GROUP BY子句基本语法规则](https://blog.csdn.net/hyongilfmmm/article/details/93891020)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [select语句的执行顺序,order by子句介绍,group by子句介绍](https://blog.csdn.net/yangaoyuan1999/article/details/105919859)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值