Sql 确定记录的出现次数
我有两张表——学生和面试——有价值观:Sql 确定记录的出现次数,sql,mysql,Sql,Mysql,我有两张表——学生和面试——有价值观: student ---------- sID sName interview ---------- sID date outcome = (OFFER, NOOFFER, HIRED) 我必须列出从未收到录取通知书但接受过五次以上面试的学生的sID 我很难确定一个学生是否接受过5次以上的面试。我知道您可以只计算记录,看看sID是否列出了5次以上,但我不确定如何格式化它。任何帮助都将不胜感激 使用: SELECT s.sid FR
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')
使用:
好的,这是有道理的,但我不确定我是否理解“selectnull”语句-这到底是做什么的?不过这很有效,非常感谢@user457666:在EXISTS子句中,不使用SELECT子句。您可以用
EXISTS替换EXISTS(选择NULL…
)(选择1/0…
,它应该会返回一个数学错误来除以零——它不会。存在
只对FROM
子句感兴趣。好的,这是有意义的,但我不确定我是否理解“SELECT null”语句-这到底是做什么的?不过这很有效,非常感谢!!@user457666:in如果是EXISTS子句,则不使用SELECT子句。您可以将EXISTS(SELECT NULL…
替换为EXISTS(SELECT 1/0…
),它将返回一个数学错误,用于除以零——它不会。EXISTS只对FROM
子句感兴趣。
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