Упрощенный пример, основанный на таблице EMP Скотта.
Это то, что вы сделали:
SQL> select deptno, job
2 from emp
3 group by deptno;
select deptno, job
*
ERROR at line 1:
ORA-00979: not a GROUP BY expression
Как видите, Oracle пометил виновника - JOB
column.
Поэтому, если вы хотите использовать предложение GROUP BY
(это правильно, но - вы получите тот же результат, используя DISTINCT
; эти два не следует использовать вместе. GROUP BY
обычно используется с агрегатами, такими как min
, max
, avg
и т. д.), а затем помещает все столбцы в GROUP BY
:
SQL> select deptno, job
2 from emp
3 group by deptno, job;
DEPTNO JOB
---------- ---------
20 CLERK
30 SALESMAN
20 MANAGER
30 CLERK
10 PRESIDENT
30 MANAGER
10 CLERK
10 MANAGER
20 ANALYST
9 rows selected.
Или, как я уже сказал, используя DISTINCT
:
SQL> select distinct deptno, job
2 from emp;
DEPTNO JOB
---------- ---------
20 CLERK
30 SALESMAN
20 MANAGER
30 CLERK
10 PRESIDENT
30 MANAGER
10 CLERK
10 MANAGER
20 ANALYST
9 rows selected.
SQL>