查询的问题

时间:2011-09-15 02:15:04

标签: sql oracle sqlplus

我想包括dname,deptno,loc,加入ename并将colum标记为Number_of_People总结工资标签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.

表部门;

  SQL> select * from dept;

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

2 个答案:

答案 0 :(得分:4)

您需要在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;

答案 1 :(得分:3)

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 ;