整理了一則SQL SERVER練習(xí)題,學(xué)習(xí)了這個(gè)大家可以熟悉SQL SERVER相關(guān)知識。
問題描述:
已知關(guān)系模式:
s (sno,sname) 學(xué)生關(guān)系。
sno 為學(xué)號,
sname 為姓名
c (cno,cname,cteacher) 課程關(guān)系。
cno 為課程號,
cname 為課程名,
-
cteacher 為任課教師
sc(sno,cno,scgrade) 選課關(guān)系。
scgrade 為成績
要求實(shí)現(xiàn)如下5個(gè)處理:
1. 找出沒有選修過“李明”老師講授課程的所有學(xué)生姓名
2. 列出有二門以上(含兩門)不及格課程的學(xué)生姓名及其平均成績
3. 列出既學(xué)過“1”號課程,又學(xué)過“2”號課程的所有學(xué)生姓名
4. 列出“1”號課成績比“2”號同學(xué)該門課成績高的所有學(xué)生的學(xué)號
5. 列出“1”號課成績比“2”號課成績高的所有學(xué)生的學(xué)號及其“1”號課和“2”號課的成績
1. 找出沒有選修過“李明”老師講授課程的所有學(xué)生姓名
--實(shí)現(xiàn)代碼:
select sname from s
where not exists(
select * from sc,c
where sc.cno=c.cno
and c.cteacher='李明'
and sc.sno=s.sno)
2. 列出有二門以上(含兩門)不及格課程的學(xué)生姓名及其平均成績
--實(shí)現(xiàn)代碼:
select s.sno,s.sname,avg_scgrade=avg(sc.scgrade)
from s,sc,(
select sno
from sc
where scgrade<60
group by sno
having count(distinct cno)>=2
)a where s.sno=a.sno and sc.sno=a.sno
group by s.sno,s.sname
3. 列出既學(xué)過“1”號課程,又學(xué)過“2”號課程的所有學(xué)生姓名
--實(shí)現(xiàn)代碼:
select s.sno,s.sname
from s,(
select sc.sno
from sc,c
where sc.cno=c.cno
and c.cname in('1','2')
group by sno
having count(distinct cno)=2
)sc where s.sno=sc.sno
4. 列出“1”號課成績比“2”號同學(xué)該門課成績高的所有學(xué)生的學(xué)號
--實(shí)現(xiàn)代碼:
select s.sno,s.sname
from s,sc sc1,sc sc2
where sc1.cno='1'
and sc2.sno='2'
and sc1.cno=s.cno
and sc1.scgrade>sc2.scgrade
5. 列出“1”號課成績比“2”號課成績高的所有學(xué)生的學(xué)號及其“1”號課和“2”號課的成績
--實(shí)現(xiàn)代碼:
select sc1.sno,[1號課成績]=sc1.scgrade,[2號課成績]=sc2.scgrade
from sc sc1,sc sc2
where sc1.cno='1'
and sc2.cno='2'
and sc1.sno=sc2.sno
and sc1.scgrade>sc2.scgrade
本文出自:億恩科技【1tcdy.com】
服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]
|