2016-04-24 111 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; 

我必须这样做,以便列出所有非教育学院的教授的姓名,这些教授的收入超过教育学院的教授。我究竟做错了什么?Where子句包括IN和NOT IN

+0

什么叫'WHERE 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);