SQL語句複習

表結構:

SQL練習:

/*--一、查詢課程1的成績 比 課程2的成績 高 的全部學生的學號;*/
SELECT A.sno FROM
(SELECT sno,score FROM sc WHERE cno=1 )as A,
(SELECT sno,score FROM sc WHERE cno=2 )as b
WHERE A.score>b.score or A.score = b.score
/*--二、查詢平均成績大於60分的同窗的學號和平均成績;*/
SELECT sno,AVG(score) FROM sc 
GROUP BY sno 
HAVING AVG(score) >60
/*--三、查詢全部同窗的學號、姓名、選課數、總成績;*/
/*個人回答1*/
SELECT A.sno,A.score,cno,B.sname FROM
(SELECT sc.sno,score,COUNT(cno) cno FROM sc GROUP BY sc.sno )as A,
(SELECT student.sno,sname FROM student) as B
WHERE A.sno = B.sno
/*個人回答2*/
SELECT A.sno,sum(A.score),count(A.cno),B.sname
	FROM sc as A,student as B
	WHERE A.sno = B.sno
	GROUP BY A.sno  
/*其餘回答*/
SELECT A.sno,A.score,COUNT(A.cno),B.sname FROM
sc as A, student as B WHERE A.sno = B.sno GROUP BY A.cno

/*--四、查詢姓「李」的老師的個數;*/sql

SELECT COUNT(*) FROM teacher where tname like '%李%'

/*--五、查詢沒學過「葉平」老師課的同窗的學號、姓名;*/3d

/*個人回答1*/blog

SELECT distinct A.sno,D.sname FROM
(SELECT sno,cno FROM sc ) as A,
(SELECT tno FROM teacher WHERE tname='葉平') as B,
(SELECT cno,tno FROM course) as C,
(SELECT sname,sno FROM student) as D
WHERE B.tno != C.tno AND A.cno = C.cno AND A.sno = D.sno

/*個人回答2*/io

SELECT distinct D.sno,D.sname 
FROM sc as A, teacher as B,course as C,student as D
WHERE B.tno != C.tno 
AND A.cno = C.cno 
AND A.sno = D.sno
AND B.tname = '葉平'

/*個人回答3*/class

SELECT sno,sname FROM student WHERE sno NOT in (
    SELECT sno FROM sc WHERE cno in(
        SELECT cno FROM course WHERE tno in(
            SELECT tno FROM teacher WHERE tname='葉平'
            )
        )
    )

/*--六、查詢同時學過課程1和課程2的同窗的學號、姓名;*/im

/*個人回答1*/d3

SELECT A.sno , C.sname FROM 
(SELECT sno FROM sc WHERE cno = 1) as A ,
(SELECT sno FROM sc WHERE cno = 2) as B,
(SELECT sno,sname FROM student ) as C
WHERE A.sno = B.sno AND A.sno = C.sno

/*個人回答2*/查詢

SELECT sno,sname FROM student WHERE sno in (
    SELECT sno FROM sc WHERE cno = 2 and cno in (
        SELECT sno FROM sc WHERE cno = 1
    )
)

/*--七、查詢學過「葉平」老師所教全部課程的全部同窗的學號、姓名;*/img

SELECT sname,sno FROM student WHERE sno in(
    SELECT A.sno 
    FROM sc A,teacher B,course C
    WHERE B.tno = C.tno 
    AND A.cno = C.cno
    AND B.tname = '葉平'
)

/*--八、查詢 課程編號1的成績 比 課程編號2的成績 高的全部同窗的學號、姓名;*/di

SELECT sname,C.sno FROM
    (SELECT sno,score FROM sc WHERE cno = 1) as A,
    (SELECT sno,score FROM sc WHERE cno = 2) as B,
    (SELECT sno,sname FROM student ) as C
WHERE A.score>B.score AND A.sno = B.sno AND C.sno = A.sno

 

SELECT sname,sno FROM student WHERE sno in (
    SELECT A.sno FROM
        (SELECT sno,score FROM sc WHERE cno = 1) as A,
        (SELECT sno,score FROM sc WHERE cno = 2) as B
WHERE A.score>B.score AND A.sno = B.sno
)

/*--九、查詢全部課程成績小於60分的同窗的學號、姓名;*/

SELECT sno FROM sc WHERE MAX(score)>60 GROUP BY sno ASC /*這樣是錯誤的寫法,注意!!!!!!!*/

SELECT sno FROM sc GROUP BY sno ASC HAVING(MAX(score)<60)

  

/*--十、查詢全部課程成績大於60分的同窗的學號、姓名;*/

SELECT sno,MIN(score) FROM sc GROUP BY sno ASC HAVING(MIN(score)>60)
相關文章
相關標籤/搜索