group_by基础

group by 基础:
Specify the GROUP BY clause if you want Oracle to group the selected rows based on the value of expr(s) for each row and return a single row of summary information for each group。
也就是说,如果不使用分组函数,返回的是一组数据的统计内容,只一行,所以,参与分组的列都应该存在于group by 中。个人思考,还在修正中。
修正1:
修改红字中的内容如下:
GROUP BY clause,也就是说,clause相同的会被分为一组;这个时候,进行select,如果要取GROUP BY clause 以外的clause,当然会报错,这是因为,分组的时候,仅仅以GROUP BY clause中的相同clause作为条件,分组的数据的其他的clause可以是不同的。如果这样:select a,b,c from table group by a,b
一方面,分组了,取分组的a,b列;另一方面,又要取分组外的c列,组里的每个成员的C列是不同的,如果把每个C列都取出来,那分组还有什么意义呢?所以,c也要出现在group by 中。
这也从侧面说明了,分组能取出来的只是所分的组里的clause的数据。而几行数据成为一组的条件,就是这几行数据在GROUP BY clause时,clause中的数据相同。
补充:
数据库中存在n行数据,这n行数据的特点是,其x列中的内容相同,此时,就可以对这n行数据进行group by x;得到的是x列中的内容;
如果x列中数据相同,第x+1列中的数据不同,则group by x,x+1,得到的结果集中的行数和x+1列的行数相同;
此时对x+1列使用max min 等分组函数,就可以得出唯一一行记录,其含义为:以x,x+1列进行分组得到的组中,x+1列中值最大(Max)的那一行记录。


欢迎拍砖。

你可能感兴趣的:(oracle,C++,c,C#)