我有两个表 - 学生和访谈 - 与价值观:确定记录的出现次数
student
----------
sID
sName
interview
----------
sID
date
outcome = (OFFER, NOOFFER, HIRED)
而且我必须列出谁从未收到要约的任何学生的SID,但谁拥有了超过五次采访。
我无法确定如何确定学生是否有超过5次采访。我知道你可以对记录进行计数,以查看sID是否超过5次,但我不确定如何格式化它。任何帮助将不胜感激!
我有两个表 - 学生和访谈 - 与价值观:确定记录的出现次数
student
----------
sID
sName
interview
----------
sID
date
outcome = (OFFER, NOOFFER, HIRED)
而且我必须列出谁从未收到要约的任何学生的SID,但谁拥有了超过五次采访。
我无法确定如何确定学生是否有超过5次采访。我知道你可以对记录进行计数,以查看sID是否超过5次,但我不确定如何格式化它。任何帮助将不胜感激!
用途:
SELECT s.sid
FROM STUDENT s
WHERE EXISTS(SELECT NULL -- more than five interviews
FROM INTERVIEW i
WHERE i.sid = s.sid
GROUP BY i.sid
HAVING COUNT(*) > 5)
AND NOT EXISTS(SELECT NULL -- never received an offer
FROM INTERVIEW i
WHERE i.sid = s.sid
AND i.outcome = 'OFFER')
好吧,这是有道理的,但我不知道我明白'选择空'语句 - 这到底是什么?这工作虽然,非常感谢! – user457666 2010-09-26 02:06:18
@ user457666:在EXISTS子句中,不使用SELECT子句。你可以使用'EXISTS(SELECT 1/0 ...'替换'EXISTS(SELECT NULL ...),它应该返回一个用零除的数学错误 - 它不会。'EXISTS'只对'FROM'子句之后的任何内容。 – 2010-09-26 02:18:23
明白了 - 谢谢! – user457666 2010-09-26 13:19:40
select s.sID,s.sName from
(select sID,count(0) as numInterviews
from interview
where sID not in (select sID from interview where outcome='OFFER')
group by sID
) as interviewCounts
join student s on s.sID=interviewCounts.sID
where interviewCount>5
什么口味的SQL这是什么? – NullUserException 2010-09-26 01:41:02
我正在使用mySQL – user457666 2010-09-26 01:44:36