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;
由于分析过程与上一题类似,故不做重复。
结果为:
相信经过修炼,你已经领悟了。
- Oracle基础——group by 、group by rollup、grouping、grouping_id等的用法
- Oracle PLSQL之HAVING后面的条件可由聚合函数构成,也可由GROUP BY后的字段构成
- Oracle 数据库基础学习 (四) group by的使用
- oracle中的 group by、sum聚合函数注意事项
- Oracle PLSQL之HAVING后面的条件可由聚合函数构成,也可由GROUP BY后的字段构成
- Oracle PLSQL之HAVING后面的条件可由聚合函数构成,也可由GROUP BY后的字段构成
- ORACLE字符串的连接聚合函数可用于group by
- 在oracle的聚合函数(sum、avg等)中使用group by来分组你的结果
- Oracle-24-聚合函数&group by的使用
- oracle基础之SELECT--group by
- Oracle PL/SQL基础知识
- Oracle 基础
- Oracle基础(二)---操作命令
- ORACLE基础知识
- Oracle SQL*PLUS基础及sqlplus命令详解-1
- Oracle基础
- oracle Group by 分组查询后,分页
- Oracle® 数据库备份恢复基础--3.5为RMAN设置闪回恢复区
- oracle第一天- 基础命令
- (十九)oracle 基础使用以及sql语句基础