2011-09-15 19 views
2

dname、deptno、locを追加してenameを追加し、列にNumber_of_Peopleというラベルを付けたいと思います。salary lable colum Total Salaryがdeptテーブルに参加し、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 

答えて

4

使用しています。

試してみてください。

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; 
+0

あなたがそれを持っている方法を実行します。 ORA-00918:列があいまいに定義されている - – user770022

+0

この場合、 'dname'、' deptno'、または 'loc'のいずれかが' emp'と 'dept'の両方で定義されています。あなたが望むものを選択します(例えば 'dname'が繰り返される場合は、' emp.dname'か 'dept.dname'を選ぶかを選択します)。 –

+0

私は両方のテーブルを投稿しました – user770022

3

Where句はgroup by句の前に来なければなりません。あなたがグループ化した後、フィルタリングを行うために必要がある場合は、あなたがgroup by句の前に来るようにwhere句を必要とする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 ; 
+0

私はあなたがそれを持っている方法を実行すると、私はエラーを取得します。行1のエラー: ORA-00918:列があいまいに定義されています – user770022

+0

ええ。 2つのデプノの列があります。両方とも同じ値(結合条件ごと)であっても、返されるSQLを指定する必要があります。私はその声明を編集した。 –

+0

同じエラーが発生する – user770022

関連する問題