[SQL ] Group by的意义

楼主: lueichun (no anonymous)   2019-11-06 20:25:10
数据库名称: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;(对)
作者: criky (2501-2)   2019-11-06 23:07:00
就分组啊不用group by就是不分组,看全部的count,sum...group by sex(gender)就是看男女的count,sum...
作者: cutekid (可爱小孩子)   2019-11-07 11:17:00
你的理解是对的喔!
作者: ww90053 (Allen)   2018-03-27 21:43:00
我的解释,一群男人和一群女人分开比大小(你看,我的ename比较大~)

Links booklink

Contact Us: admin [ a t ] ucptt.com