数据库名称:Oracle
数据库版本:
内容/问题描述:Oracle的group by语法,有个规定是若在select语句某个字段使用
聚合函数(例如sum count avg max min),那么表格其他字段就需要被加到
group by子句里,例如以下网页某段叙述:
https://bit.ly/2WXTihj
如果查询中包含一个聚合函数,而所选择的列不在聚合函数中,那麽这些列就必须
出现在GROUP BY子句中.(不用聚合函数的列必须出现在group by后)
不这样做的话,会出现ORA-00937: 不是一个单一群体的群体函数
那我请问在group by子句加上其他列,这样做在逻辑上的意义可以解释成以下这样吗:
因为使用了聚合函数,就相当于是将多个列的值浓缩成一个值,例如
max就是从多个列中取最大值;min就是取最小值;sum就是取出列所有值的总和这一个值。
那么为了让这些值可以和其他字段保持1:1的关系,所以必须要将其他列给group by起来,
例如同一个网页的另一段叙述:
例1 :select ename,sex from emp group by sex;
(错,ename没有用聚合函数,也没有出现在group by后面,因为将sex分成两组,
但ename有很多,到底输出那个ename呢?)
例2: select max(ename),sex from emp group by sex;(对)