Проблема с запросом - PullRequest
       5

Проблема с запросом

2 голосов
/ 15 сентября 2011

Я хотел бы включить dname, deptno, loc, добавить ename и обозначить столбец как Number_of_People, суммировать зарплату, обозначить столбец Total Salary, затем присоединиться к таблице dept, и я хочу сделать это только для отдела 30

Вот ошибка, которую я получаю

SQL> select dname,deptno, loc, count(ename) as Number_of_People, sum(sal) as   Total_Salary from emp join dept on emp.deptno = dept.deptno group by dname,loc where  deptno =30;
 select dname,deptno, loc, count(ename) as Number_of_People, sum(sal) as Total_Salary from emp join dept on emp.deptno = dept.deptno group by dname,loc where deptno =30

                                                                   *
ERROR at line 1:
ORA-00933: SQL command not properly ended


SQL>

Таблица emp;

 SQL> select empno, ename, job, mgr, hiredate,comm, deptno from emp;

 EMPNO ENAME      JOB              MGR HIREDATE        COMM     DEPTNO
 ---------- ---------- --------- ---------- --------- ---------- ----------
  7839 KING       PRESIDENT            17-NOV-81                    10
  7698 BLAKE      MANAGER         7839 01-MAY-81                    30
  7782 CLARK      MANAGER         7839 09-JUN-81                    10
  7566 JONES      MANAGER         7839 02-APR-81                    20
  7654 MARTIN     SALESMAN        7698 28-SEP-81       1400         30
  7499 ALLEN      SALESMAN        7698 20-FEB-81        300         30
  7844 TURNER     SALESMAN        7698 08-SEP-81          0         30
  7900 JAMES      CLERK           7698 03-DEC-81                    30
  7521 WARD       SALESMAN        7698 22-FEB-81        500         30
  7902 FORD       ANALYST         7566 03-DEC-81                    20
  7369 SMITH      CLERK           7902 17-DEC-80                    20

 EMPNO ENAME      JOB              MGR HIREDATE        COMM     DEPTNO
 ---------- ---------- --------- ---------- --------- ---------- ----------
  7788 SCOTT      ANALYST         7566 09-DEC-82                    20
  7876 ADAMS      CLERK           7788 12-JAN-83                    20
  7934 MILLER     CLERK           7782 23-JAN-82                    10

  14 rows selected.

Таблица dept;

  SQL> select * from dept;

  DEPTNO DNAME          LOC
  ---------- -------------- -------------
    10 ACCOUNTING     NEW YORK
    20 RESEARCH       DALLAS
    30 SALES          CHICAGO
    40 OPERATIONS     BOSTON

Ответы [ 2 ]

4 голосов
/ 15 сентября 2011

Вы должны добавить предложение where перед предложением group by.

Попробуйте:

select dname,deptno, loc
, count(ename) as Number_of_People
, sum(sal) as   Total_Salary 
from emp join dept on emp.deptno = dept.deptno 
where deptno=30
group by dname,loc;
3 голосов
/ 15 сентября 2011

Where предложения должны предшествовать group by предложениям. Если вам нужно выполнить фильтрацию после группировки, используйте having

select dname, emp.deptno as deptno, loc, count(ename) as Number_of_People, 
    sum(sal) as   Total_Salary from emp join dept on emp.deptno = dept.deptno 
    where  emp.deptno =30
    group by dname,loc ;
...