2017-09-29 12 views

答えて

3

あなたはyearlevelのための明確なフィルタを用いて集約関数の数を使って講師を取得し、

select lecturer 
from table 
group by lecturer 
having count(distinct yearlevel) >= 2 
+0

ありがとう!だから、年レベルのうちの1つが9であることを確認するために条件を1つ追加したい場合はどうしたらいいですか? –

+0

はい、あなたはcount部分の後に句をつけるのと同じようにすることができます。 'とsum(yearlevel = 9)' –

+1

ありがとうございました。 –

0

2つのクエリが頭に浮かぶhaving句を使用して集計結果を絞り込むことができます。最初の質問自体から言語を借り、そしてHAVING句でCOUNT DISTINCTを使用する:

select lecturer       -- "select the lecturer" 
from myTable 
group by lecturer 
having count(distinct yearlevel) >= 2 -- "who teaches at least two distinct yearlevel" 

EXISTSを使用する特殊なケースです。あなたは2つの別々の年のレベルを探しているので、これを「もう1年のレベルを教える」と書き直すこともできます。これは、結果をどのように投影したいか、オプティマイザが決定したものに応じて便利です:

select * 
from myTable a 
where exists (
    select 1 
    from myTable b 
    where b.lecturer = a.lecturer 
    and b.yearlevel <> a.yearlevel) 
+0

ありがとうございました。 –

関連する問題