Oracle基础之group by和聚合函数

当我们刚开始学Oracle时,见到group by,常常会来个三连问:为什么要用group by?group by应该怎么用?为什么写了group by运行时会提示“不是单组分组函数;不符合group by语法”?面对这些问题,我都胆战心惊了(怎么可能)。接下来我将把group by的心经要诀传授给你们,是不是很激动鸭,那就拿起你们的小本本记下来吧(收藏点赞+关注哦)。

何为group by

group by即分组

如何用group by

group by语法:

在select语句的一般格式中就有group by语句,group
by语句一般放在where语句的后面,若有having子句,则放在having子句之前。group
by后面加要分组的字段名或者表达式(视情境而定)。

如果仅仅只有group by子句,相信大家都懂,但是,那多没意思,以下介绍聚合函数与group by的结合。
聚合函数,又称组函数。常见的聚合函数有:

1.count——返回找到的记录数;
2.min——返回一个数字列或计算列的最小值;
3.max——返回一个数字列或计算列的最大值;
4.sum——返回一个数字列或计算列的综合;
5.avg——对一个数字列或计算列求平均值;

当group by和聚合函数同时出现在一条语句中,若使用不当,常常会提示“不是单组分组函数”,这时候我们就需要深入的理解group by与聚合函数的关系了。
当我们同时使用group by和聚合函数时,应该牢记一点:分组group by一般与聚合函数连用,即先分组再聚合(如先分组再求和、先分组再求平均等等)

下面我举一个例子让大家更好的理解分组与聚合函数。
在result(供货)表中有以下数据:
在这里插入图片描述
求1:每个供应商供货的产品总数量

select supplier_name,sum(product_number)
from result
group by supplier_name;

结果为:
在这里插入图片描述
其过程为:
先分组:
对supplier_name分组,得
在这里插入图片描述
再求和:
对supplier_number求和,得
在这里插入图片描述
最后得出结果。
再看一个较难的
求2:每个供应商每种货物的产品总数量。
这道题比第一道只是多了一个条件,在相同的供应商条件下,产品编号也要一样,所以我们只需要对供应商和产品编号同时分组即可

select supplier_name,product_id,sum(product_number)
from result
group by supplier_name,product_id;

由于分析过程与上一题类似,故不做重复。
结果为:
在这里插入图片描述
相信经过修炼,你已经领悟了。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
group by不是聚合函数。它是用于按照指定的列对结果集进行分组的语句。在使用group by时,查询结果会根据指定的列进行分组,并将每个组的结果合并。通常,在group by之后,可以使用聚合函数对每个分组进行计算,如sum、count、avg等。在你提供的引用中,group by用于按照create_time列对结果集进行分组,以便计算每个create_time对应的day_growth的总和。但是,引用中的错误提示表明,day_growth列在group by子句中没有被列出,导致出现错误。因此,要使用group by语句时,需要确保被选中的列在group by子句中也出现。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [MySQL笔记-group by和聚合函数的使用](https://blog.csdn.net/qq78442761/article/details/123626662)[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* [Oracle基础group by和聚合函数](https://download.csdn.net/download/weixin_38620267/13684947)[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 ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值