昨天練Sql語句,數據庫建了四個表分別是,學生表,課程表,成績表以及教師表(教師表不在討論范圍),突然想到以前高中時代老師手上的那張成績表,然后我就尋思着能不能用Sql語句把表打印出來,以下是我的思考過程:
話不多說,先上三張表的圖
如下圖1.1學生表(Student表)
S#-學號 Sname-姓名 Sage-年齡 Ssex-性別
圖1.1 Student表
如下圖1.2課程表(Course表)
C#-課程號 Cname-課程名 T#-教師號
圖1.2課程表 Course表
如下圖1.3成績表(CS表)
S#-學生號 C#-課程號 score-成績
圖 1.3課程表Course表
首先,我初步查詢了所有人所有科目成績
Sql語句如下:
查詢結果如下:
成績是打印出來了,可是有點不好看,重復的數據太多了,於是繼續尋思精簡一點的。
如果要精簡,那么學科就不能是Cname了,而是將一個個學科打出來,就像成績單,各科成績名和列名在同一列,於是乎我想到了case then else end
sql語句如下:
然而結果並沒有Group by,結果如下:
想來想去我就用表的聯結join,然后成功了。
sql語句如下:
結果如下:
哦!忘記排名了:
重寫sql如下:
結果如下:
另外有幾科目成績沒有加進來,所以總分有些加了不夠。
差不多就是這樣了。