我有兩個表 - 學生和訪談 - 與價值觀:確定記錄的出現次數
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