1

こんにちはみんな私は次の問題に関連する次の質問があります

From tables emp and dept find number of employees working in every departments by their jobs.
Showing number not more than 5.

私は次のことを書きました

select count(*)
from emp  e,dept d
where  e.department_id=d.department_id  and  count(*)<5

group by   e.department_id,e.job;

しかし、それは私に次のエラーを示しています

Error at Command Line:3 Column:23
Error report:
SQL Error: ORA-00933: SQL command not properly ended
00933. 00000 -  "SQL command not properly ended"
*Cause:    
*Action:

問題は何ですか?助けてください

4

3 に答える 3

4

HAVING句を使用してみてください

SELECT  COUNT(*)
FROM    emp  e 
        INNER JOIN dept d 
            ON e.department_id=d.department_id  
GROUP   BY   e.department_id,e.job
HAVING  count(*)<5 ;
于 2013-02-04T14:48:14.513 に答える
3

値に基づいてフィルタリングしようとしているため、句count(*)を使用する必要があります。句は、フィルタリングに集計関数を使用しますHAVINGHAVING

@JWの回答には何の問題もありませんが、句JOINの構文の代わりにANSI構文を使用するように少し変更します。JOINWHERE

select count(*) Total
from emp e
inner join dept d
    on e.department_id=d.department_id  
group by e.department_id, e.job 
having count(*) < 5

WHEREまたは、クエリをサブクエリにして、 :を使用してフィルタリングすることもできます。

select Total
from
(
   select count(*) Total
   from emp e
   inner join dept d
      on e.department_id=d.department_id  
   group by e.department_id, e.job 
) src
where total < 5
于 2013-02-04T14:52:00.587 に答える
2

これを試して::having

select count(*)
from emp  e,dept d
where  e.department_id=d.department_id  

group by   e.department_id,e.job having count(*)<5;
于 2013-02-04T14:51:31.883 に答える