1

Oracle SQL に 2 つのテーブルがあります。

プロジェクト ( PID、Pname、予算、DID )

DIVISION ( DID , Dname)

太字= 主キー

斜体= 外部キー

部門のマーケティングよりも多くのプロジェクトを持っている部門をリストしたい.

これが私のコードです:

select dname as "Division"
from division d, project p
where d.did = p.did
group by dname
having count(pid) >= all
(select count(p.pid)
from project p, division d
where p.did = d.did and d.dname = 'marketing')  

正しいレコードだけでなく、マーケティング レコードも返します。結果からマーケティング レコードを除外するにはどうすればよいですか?

4

2 に答える 2

3

以下を追加して、最初の SQL からマーケティング レコードを除外してはいかがでしょうか。

and d.dname != 'marketing'

最初のwhere節へ。

于 2012-12-15T22:55:34.783 に答える
0

部門ごとにカウントを集計する共通テーブル式 (WITH 句) を使用すると効率が向上し、クエリを実行できます...

with cte as (
  select   dname,
           count(*) projects
  from     project p,
           division d
  where    p.did = d.did
  group by dname)
select dname,
       projects
from   cte
where  projects > (select projects
                  from   cte
                  where  dname = 'Marketing)
于 2012-12-15T21:23:27.897 に答える