SQL> select ename,deptno from emp group by deptno,ename;ENAME DEPTNO ---------- ---------- JONES 20 WARD 30 SCOTT 20 KING 10 JAMES 30 ALLEN 30 MARTIN 30 BLAKE 30 FORD 20 SMITH 20 ADAMS 20ENAME DEPTNO ---------- ---------- MILLER 10 CLARK 10 TURNER 30已选择14行。
难道不是应该先把deptno一样的放在一起吗?
group by deptno,ename 是按照这两个进行分组 应该没有先后顺序的 你想按照deptno分组 可以直接group by deptno
SQL> select ename,deptno from emp group by deptno; select ename,deptno from emp group by deptno * 第 1 行出现错误: ORA-00979: 不是 GROUP BY 表达式 select里有哪一列,group by 里也必须有
select max(ename),deptno from emp group by deptno;
不是select里面有那一列,group by都要有, 把没有的用聚集函数就ok
SQL> select max(ename),deptno 2 from emp 3 group by deptno;MAX(ENAME) DEPTNO ---------- ---------- WARD 30 SMITH 20 MILLER 10
select empno,ename,job,sal from scott.emp group by job,empno,ename,sal having sal<=2000 这条语句是oracle9i入门与提高电子版中的例子,书中的结果是先把所有job为clerk的员工列出来,之后再是salesman的。 一下是10g的运行结果: SQL> select empno,ename,job,sal from scott.emp group by 2 job,empno,ename,sal having sal<=2000; EMPNO ENAME JOB SAL ---------- ---------- --------- ---------- 7844 TURNER SALESMAN 1500 7654 MARTIN SALESMAN 1250 7369 SMITH CLERK 800 7499 ALLEN SALESMAN 1600 7876 ADAMS CLERK 1100 7934 MILLER CLERK 1300 7521 WARD SALESMAN 1250 7900 JAMES CLERK 950已选择8行。
要使结果排序加orader by吧.
记得以前的group by也可以的,奇怪了
好象是楼主说的那样,9i好象用GROUP BY 就帮你排序了的。 10G好象要自己手动写排序了。也只是听说而已!
group by deptno 才会按deptno分组列出记录group by deptno,ename 当然是按deptno,ename分组
---------- ----------
JONES 20
WARD 30
SCOTT 20
KING 10
JAMES 30
ALLEN 30
MARTIN 30
BLAKE 30
FORD 20
SMITH 20
ADAMS 20ENAME DEPTNO
---------- ----------
MILLER 10
CLARK 10
TURNER 30已选择14行。
是按照这两个进行分组
应该没有先后顺序的
你想按照deptno分组
可以直接group by deptno
select ename,deptno from emp group by deptno
*
第 1 行出现错误:
ORA-00979: 不是 GROUP BY 表达式
select里有哪一列,group by 里也必须有
from emp
group by deptno;
把没有的用聚集函数就ok
2 from emp
3 group by deptno;MAX(ENAME) DEPTNO
---------- ----------
WARD 30
SMITH 20
MILLER 10
job,empno,ename,sal having sal<=2000
这条语句是oracle9i入门与提高电子版中的例子,书中的结果是先把所有job为clerk的员工列出来,之后再是salesman的。
一下是10g的运行结果:
SQL> select empno,ename,job,sal from scott.emp group by
2 job,empno,ename,sal having sal<=2000; EMPNO ENAME JOB SAL
---------- ---------- --------- ----------
7844 TURNER SALESMAN 1500
7654 MARTIN SALESMAN 1250
7369 SMITH CLERK 800
7499 ALLEN SALESMAN 1600
7876 ADAMS CLERK 1100
7934 MILLER CLERK 1300
7521 WARD SALESMAN 1250
7900 JAMES CLERK 950已选择8行。
10G好象要自己手动写排序了。也只是听说而已!