2016-04-24 13 views
0
SELECT professor.pr_name, professor.pr_college, professor.pr_salary 
FROM professor 
WHERE professor.pr_salary NOT IN ('Education') > professor.pr_salary IN ('Education') 
ORDER BY professor.pr_salary DESC; 

私は、教育大学の教授よりも多くを得る教育大学にないすべての教授の名前をリストアップするようにしなければなりません。私は間違って何をしていますか?INとNOT INを含む句

+0

を使用すると、 '' professor.pr_salary NOT IN( '教育')> professor.pr_salary IN( '教育')によってどのような意味ですか? >を&と置き換えるとうまくいくはずです。なぜここよりも大きいの?文脈から外れています –

+0

あなたのテーブルの構造、いくつかのサンプルデータ、そしてこのサンプルのために得ようとしている結果を共有してください。 – Mureinik

+0

私は、教育大学の教授よりも多くを作る教育大学にはない教授の唯一のpr_salaryを示す必要があるので、それ以上に大きくする必要があります。 – Deniz

答えて

0

あなたの課題について多くの質問をしているようですので、私は完全な解決策を提示するつもりはありません。あなたはそれをまとめる必要があります。

あなたはこのような教育の教員の給与を見つけることができます。

SELECT pr_salary 
FROM professor 
WHERE pr_college = 'Education' 

を(それは給与ではないよう'Education'値が参照すべきコラム明確ではありません - あなたは、必要に応じてこれを更新する必要があります - それはPROFESSORテーブルにない場合は、あなたは、あなたのテーブル定義との質問を更新するべきである)

あなたはそれらの値の最も高い給与を見つけるために、MAX()集計関数を使用することができます。

SELECT pr_name, 
     pr_college, 
     pr_salary 
FROM professor 
WHERE pr_college <> 'Education' 
ORDER BY pr_salary DESC; 

が次にあなたが教育の外給与は教育の最大値よりも高くなっているかどうかをテストするために別のフィルタ条件に追加する必要があります。

同様に、あなたがいないこのような教育の教授の詳細を見つけることができます相関サブクエリを使用して:

WHERE ... 
AND pr_salary > (/* Previous maximum value */) 
0
SELECT professor.pr_name from professor where pr_college<>'Education'and professor.pr_salary >(select max(pr_salary) from professor where pr_college='Education' group by pr_college);