大家好,我是寶器!
今天給大家分享一份星友對SQL經典面試50題的刷題記錄,寶器稍作了一些修改,以下是星友自述正文:
看完了SQL基礎教程,然後再看SQL進階教程感覺有些不是很懂,於是就開始刷題熟悉⼀下基礎知識,找了⽐較經典的很多⼈都刷過的SQL⾯試50題,B站也有挺好的視頻解答,看題先⾃⼰做,不會就看視頻解答,感覺難題都在前⾯。
剛開始基本是邊看邊做,慢慢後⾯簡單了,基本能⾃⼰先做了再看,斷斷續續終於刷完了全部題⽬,重新梳理⼀遍看看知識點,分享⼀下刷題的代碼,視頻基本講解很清楚了,我就簡單寫下思路知識。(本文只列舉部分問題,完整版可見星球或以下連結)
題⽬知乎連結:
https://zhuanlan.zhihu.com/p/38354000
https://zhuanlan.zhihu.com/p/43289968
B站學習視頻:
https://www.bilibili.com/video/BV1q4411G7Lw/?p=4
視頻B站連結:
https://www.bilibili.com/video/BV1q4411G7Lw?p=1
數據表介紹
學生表:
Student(s_id,s_name,s_birth,s_sex)
學生編號,學生姓名, 出生年月,學生性別
課程表:
Course(c_id,c_name,t_id)
課程編號, 課程名稱, 教師編號
教師表:
Teacher(t_id,t_name)
教師編號,教師姓名
成績表:
Score(s_id,c_id,s_s_score)
學生編號,課程編號,分數
1、查詢課程編號為「01」的課程比「02」的課程成績高的所有學生的學號(重點)
2、查詢平均成績大於60分的學生的學號和平均成績(簡單,第二道重點)
2.1、所有成績小於60分的學生信息
2.2、查詢平均成績小於60分的學生的學號和平均成績,考慮沒參加考試的情況
5、查詢沒學過「張三」老師課的學生的學號、姓名(重點)
6、查詢學過「張三」老師所教的所有課的同學的學號、姓名(重點)
7、查詢學過編號為「01」的課程並且也學過編號為「02」的課程的學生的學號、姓名(重點)
7.1、查詢學過編號為「01」的課程但沒有學過編號為「02」的課程的學生的學號、姓名(重點)
10、查詢沒有學全所有課的學生的學號、姓名(重點)
11、查詢至少有一門課與學號為「01」的學生所學課程相同的學生的學號和姓名(重點)
12、查詢和「01」號同學所學課程完全相同的其他同學的學號(重點)
13、查詢沒學過"張三"老師講授的任一門課程的學生姓名 和47題一樣(重點,能做出來)
15、查詢兩門及其以上不及格課程的同學的學號,姓名及其平均成績(重點)
17、按平均成績從高到低顯示所有學生的所有課程的成績以及平均成績(重重點與35一樣)
18、查詢各科成績最高分、最低分和平均分:以如下形式顯示:課程ID,課程name,最高分,最低分,平均分,及格率,中等率,優良率,優秀率(及格為>=60,中等為:70-80,優良為:80-90,優秀為:>=90) (超級重點)
22、查詢所有課程的成績第2名到第3名的學生信息及該課程成績(重要 25類似)
24、查詢學生平均成績及其名次(同19題,重點)
25、查詢各科成績前三名的記錄(不考慮成績並列情況)(重點 與22題類似)
35、查詢所有學生的課程及分數情況(重點)
36、查詢任何一門課程成績在70分以上的姓名、課程名稱和分數(重點) 註:不用group by
40、查詢選修「張三」老師所授課程的學生中成績最高的學生姓名及其成績(重要top)(成績最高學生可能有n個,應該用嵌套查到最高成績再查成績等於最高成績的學生信息)
41.查詢不同課程成績相同的學生的學生編號、課程編號、學生成績 (重點)
46、查詢各學生的年齡(精確到月份)
47、查詢沒學過「張三」老師講授的任一門課程的學生姓名
後記:
感謝大家一直以來的支持,今天是星球創建的第36天,目前已加入600+數據分析師和準數據分析師,多的也不介紹了,感興趣的可以自己掃碼預覽哈,給一個上次還沒用完的優惠券(價格不一樣是因為官方定價一直是每漲100人價格+10,平均大概一天3毛錢):