Oracle:对行进行分组GROUP BY

本文讲解了在SQL中使用GROUPBY的重要性和正确方法。当查询包含聚合函数时,若需选择不在聚合函数内的列,则必须在GROUPBY子句中指定这些列。此外,还介绍了WHERE字句中使用聚合函数的限制及正确做法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GROUP BY
将行分组为多个部分
注意:
1.如果查询中包含聚合函数,而所选择的列并不在聚合函数中,那么这些列就必须在GROUP BY字句中,否则会出现错误:ORA-00937:not a single-group function.

select AVG(id),id_type from test;
ORA-00937not a single-group function.

分析:这个查询既试图使用聚合函数对多行进行操作,又试图从每行中获得id_type的值。这两个操作是不可能同时完成的。
此时必须提供GROUP BY字句,告诉数据库将id_type列相同的行分组在一起,然后数据库就可以将这些组中的行传递给AVG()函数。
2.不能在WHERE字句中使用聚合函数来限制行。否则会出现错误:ORA-00934:group function is not allowed here

分析:是因为where字句只能用来对单行而不是行组进行过滤。要过滤行组,就要使用HAVING子句。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值