Where子句包含IN和NOT IN

时间:2016-04-24 07:42:29

标签: sql oracle

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;

我必须这样做,它列出了所有不在教育学院的教授的名字,这些教授的收入超过了教育学院的教授。我究竟做错了什么?

2 个答案:

答案 0 :(得分: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 */ )

答案 1 :(得分: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);