數據分析師 - 面試題(一)


根據下面3張表格,按要求使用SQL語句實現結果查詢

班級信息表
class_no st_no st_name
c1 st1 Sam
c1 st2 lucy
c2 st3 jean
c2 st4 lock
c2 st5 lily

 

成績表
st_no subject_no score
st1 1 72
st1 2 89
st1 3 78
st3 1 87
st3 3 89
st4 1 98
st4 2 94

 

課程表
subject_no subject_name
1 Chinese
2 mathmatics
3 English

 

 

 

 

 

 

 

 

(1) 查詢每個班級各科成績總和

(2) 查詢每個班級語文成績大於85分人數

(3) 查詢語文成績大於數學成績的姓名和歸屬班級

解:

(1)

SELECT 班級信息表.[class_no] , 課程表.[subject_name] , SUM(成績表.[score]) AS 成績總和

FROM 班級信息表,課程表,成績表

WHERE 班級信息表.[st_no] = 成績表.[st_no] AND 成績表.[subject_no] = 課程表.[subject_no]

GROUP BY 班級信息表.[class_no] ,課程表.[subject_name];
(1)運行結果
class_no subject_name 成績總和
c1 Chinese 72
c1 English 78
c1 mathmtics 89
c2 Chinese 185
c2 English 89
c2 mathmtics 94

(2)

SELECT 班級信息表.[class_no] , COUNT(成績表.[st_no]) AS 人數

FROM (成績表 LEFT JOIN 班級信息表 ON 成績表.[st_no] = 班級信息表.[st_no]) LEFT JOIN 課程表 ON 成績表.[subject_no] = 課程表.[subject_no]

WHERE 課程表.[subject_name] = "Chinese" AND 成績表.score > 85

GROUP BY 班級信息表.[class_no] ;
(2)運行結果
class_no 人數
c2 2

(3)

SELECT * FROM

(SELECT 班級信息表.[class_no] , 班級信息表.[st_name] , SUM(IIf(課程表.[subject_name] = "Chinese",成績表.score,NULL)) AS 語文成績 , SUM(IIf(課程表.[subject_name] = "mathmatics",成績表.score,NULL)) AS 數學成績

FROM 班級信息表,成績表,課程表

WHERE 成績表.[st_no] = 班級信息表.[st_no] AND 成績表.[subject_no] = 課程表.[subject_no]

GROUP BY 班級信息表.[class_no] , 班級信息表.[st_name])

WHERE 語文成績 > 數學成績;
(3)運行結果
class_no st_name 語文成績 數學成績
c2 lock 98 94


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM