select * from scott.emp group by deptno (×)
select * from scott.emp order by deptno(√)
还有group by 分组,的顺序怎么回事?
select avg(sal),max(sal) ,job ,deptno from emp group by job, deptno;
回车显示的既不是以job 分组,也不是以deptno分组的。
最细致的分组,比如说A可以是清华,北大;B是计算机,电子;C是编程技术,网络基础;D是计算机科学班1,电气化科学班2;
那排序是按照计算机科学班1和电气化科学班2分组,但是这两个班既可以是网络专业,也可以是编程技术的,还可以是计算机学院的,也可以是电子学院的。。而且或许是清华的或许是北大的?
还是很乱套的样子。
所以说group by的条件越多 分组越细 越没有意义
给你一个前辈给我讲时的列子你再理解一下:
A B C D 数量
001 B1 C1 D1 10
001 B2 C2 D2 20
002 B3 C3 D3 30
002 B3 C3 D4 40
GROUP BY条件 分组结果求SUM(数量)
A 2行 30
70
A,B 3行 10
20
70
A,B,C 3行 10
20
70
A,B,C,D 4行 10
20
30
40
我觉得这个例子应该很明确分组概念了 你可以理解一下
如果还不明白可以继续探讨
在Oracle中,表中是以非指定顺序存储行数据记录的,它不管行插入数据库的顺序如何。要按列以升序或降序查询行记录,必须明确指示Oracle数据库要如何去排序。
例如,您可能希望按名称的字母顺序列出所有客户,或者按照从最低到最高信用限额的顺序显示所有客户。
要对数据进行排序,我们可以将ORDER BY子句添加到SELECT语句中,参考以下语法:
要按列排序结果集,可以在ORDER BY子句之后列出该列。
按照列名是一个排序顺序,可以是:
ASC表示按升序排序
DESC表示按降序排序
默认情况下,无论是否指定ASC,ORDER BY子句都按升序对行进行排序。如果要按降序对行进行排序,请明确使用DESC。
NULLS FIRST在非NULL值之前放置NULL值,NULLS LAST在非NULL值之后放置NULL值。
ORDER BY子句可以按多列对数据进行排序,每列可能有不同的排序顺序。
请注意,ORDER BY子句总是SELECT语句中的最后一个子句。
GROUP BY 是一个聚合子句,相当于把查询出的结果按某种方式分组。
以这两个结果分组?那结果是随意显示的么?既然分组了 怎么看不出谁和谁是一组?
追答你可以吧查询结果贴出来一下,结果是 以上2个分组+avg()升序来显示。