sql 練習(xí)(二)

環(huán)境是mysql

練習(xí)數(shù)據(jù)見SQL:練習(xí)的前期準(zhǔn)備
sql 練習(xí)(一)

11、查詢‘3-105’號(hào)課程的平均分

SELECT cno,AVG(degree)
  FROM score
 WHERE cno='3-105'

12、查詢Score表中至少有5名學(xué)生選修的并以3開頭的課程的平均分?jǐn)?shù)偏友。

SELECT AVG(degree),cno
  FROM score 
 WHERE cno LIKE'3%'
 GROUP BY cno 
HAVING COUNT(*)>=5

SELECT AVG(degree),cno 
  FROM score 
 GROUP BY cno 
HAVING (COUNT(1)>=5 AND cno LIKE '3%')

13、查詢最低分大于70忘衍,最高分小于90的Sno列。

SELECT sno
  FROM score 
 GROUP BY sno 
HAVING MIN(degree)>=70 AND MAX(degree)<=90

14卿城、查詢所有學(xué)生的Sname淑履、Cno和Degree列。

-- 集合思維(優(yōu)選)
SELECT a.sname,b.cno,b.degree
  FROM student a
  JOIN score b
    ON a.sno=b.sno
-- 過程思維        
SELECT (SELECT sname FROM student WHERE sno = sc.sno) sname ,cno ,degree 
  FROM score sc

15藻雪、查詢所有學(xué)生的Sno、Cname和Degree列狸吞。

-- 集合思維(優(yōu)選)
SELECT b.sno,a.cname,b.degree
  FROM course a
  JOIN score b
    ON a.cno=b.cno
-- 過程思維    
SELECT sno,(SELECT cname FROM course  WHERE course.cno=score.cno),degree
  FROM score 

16勉耀、查詢所有學(xué)生的Sname指煎、Cname和Degree列。

-- 集合思維(優(yōu)選)
SELECT b.sname,a.degree,c.cname
  FROM score a
  JOIN student b ON a.sno=b.sno
  JOIN course c ON a.cno=c.cno
-- 過程思維 
SELECT (SELECT Sname FROM Student WHERE student.Sno=Score.Sno) sname
      ,(SELECT Cname FROM course WHERE course.Cno=score.Cno) cname
      ,Degree 
  FROM score

17便斥、 查詢“95033”班學(xué)生的平均分至壤。

-- PS :課程號(hào)是95033,并不是班級(jí)
-- 集合思維(優(yōu)選)
SELECT AVG(b.degree),b.cno
  FROM student a
  JOIN score b
    ON a.sno=b.sno
 WHERE a.class='95033'
 GROUP BY cno

-- 過程思維
SELECT AVG(degree),Cno 
  FROM score 
  JOIN student 
    ON student.sno=score.sno 
 WHERE cno IN (SELECT cno FROM score WHERE class="95033") 
 GROUP BY cno

--18枢纠、假設(shè)使用如下命令建立了一個(gè)grade表:
SELECT *FROM grade
CREATE TABLE grade(low INT(3),upp INT(3),rank CHAR(1))

INSERT INTO grade VALUES(90,100,'A')

INSERT INTO grade VALUES(80,89,'B')

INSERT INTO grade VALUES(70,79,'C')

INSERT INTO grade VALUES(60,69,'D')

INSERT INTO grade VALUES(0,59,'E')

現(xiàn)查詢所有同學(xué)的Sno像街、Cno和rank列。

-- 集合思維(優(yōu)選)
SELECT a.Sno,a.Cno,b.rank
  FROM score a
  JOIN grade  b 
    ON a.degree>=b.low AND a.degree<=b.upp
-- 過程思維    
SELECT s.sno,s.cno
     ,(SELECT rank FROM grade AS g WHERE s.degree BETWEEN g.low AND g.upp)AS rank
FROM SCORE AS s

19晋渺、查詢選修“3-105”課程的成績高于“109”號(hào)同學(xué)成績的所有同學(xué)的記錄镰绎。

SELECT * 
  FROM score 
 WHERE cno = '3-105'
   AND degree > (SELECT degree FROM score WHERE sno = '109' AND cno = '3-105')

20、查詢score中選學(xué)多門課程的同學(xué)中分?jǐn)?shù)為非最高分成績的記錄木西。score(sno,cno,degree)

-- EXISTS與IN的使用效率的問題畴栖,通常情況下采用exists要比in效率高,
因?yàn)镮N不走索引八千,但要看實(shí)際情況具體使用:
-- IN適合于外表大而內(nèi)表小的情況吗讶;EXISTS適合于外表小而內(nèi)表大的情況

--集合思維(優(yōu)選)
SELECT a.sno,a.degree,a.cno
 FROM score a 
 LEFT JOIN (SELECT MAX(degree) degree,cno
          FROM score 
         GROUP BY cno)b 
   ON a.cno = b.cno
WHERE  a.degree != b.degree
  AND a.sno IN(SELECT sno
            FROM score
           GROUP BY sno
          HAVING COUNT(sno)>1)

-- lcy 過程思維           
SELECT sno,degree,cno
  FROM score 
 WHERE sno IN(SELECT sno
            FROM score
           GROUP BY sno
          HAVING COUNT(sno)>1)
   AND CONCAT(degree,sno) NOT IN(SELECT CONCAT(MAX(degree),sno) 
                                   FROM score
                  GROUP BY sno)
         
<錯(cuò)誤寫法>:原因在于當(dāng)有個(gè)最高分的A同學(xué)的分?jǐn)?shù)88,是B同學(xué)的最低分88分恋捆,88分會(huì)被過濾掉照皆。
解決方法有2個(gè)(其一是拼接在一起,其二是用集合的方式:join沸停、except)

SELECT sno,cno,degree,CONCAT(degree,sno) 
  FROM score 
 WHERE degree NOT IN (SELECT MAX(degree)
                        FROM score 
                       GROUP BY sno) 
   AND sno IN (SELECT sno FROM score GROUP BY sno HAVING COUNT(cno)>1) 

歡迎留言進(jìn)行討論 : )

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末膜毁,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子星立,更是在濱河造成了極大的恐慌爽茴,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绰垂,死亡現(xiàn)場離奇詭異室奏,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)劲装,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門胧沫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人占业,你說我怎么就攤上這事绒怨。” “怎么了谦疾?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵南蹂,是天一觀的道長。 經(jīng)常有香客問我念恍,道長六剥,這世上最難降的妖魔是什么晚顷? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮疗疟,結(jié)果婚禮上该默,老公的妹妹穿的比我還像新娘。我一直安慰自己策彤,他們只是感情好栓袖,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著店诗,像睡著了一般裹刮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上必搞,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天必指,我揣著相機(jī)與錄音,去河邊找鬼恕洲。 笑死塔橡,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的霜第。 我是一名探鬼主播葛家,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼泌类!你這毒婦竟也來了癞谒?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤刃榨,失蹤者是張志新(化名)和其女友劉穎弹砚,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體枢希,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡桌吃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了苞轿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片茅诱。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖搬卒,靈堂內(nèi)的尸體忽然破棺而出瑟俭,到底是詐尸還是另有隱情,我是刑警寧澤契邀,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布摆寄,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏椭迎。R本人自食惡果不足惜锐帜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望畜号。 院中可真熱鬧,春花似錦允瞧、人聲如沸简软。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽痹升。三九已至,卻和暖如春畦韭,著一層夾襖步出監(jiān)牢的瞬間疼蛾,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來泰國打工艺配, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留察郁,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓转唉,卻偏偏與公主長得像皮钠,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子赠法,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容