MySQL的寫法:
SELECT p.學生ID,p.數據庫,p.企業管理,p.英語,p.有效課程數,ROUND(p.總分/(CASE WHEN p.有效課程數 = 0 THEN 1 ELSE p.有效課程數 END)) 有效平均分 FROM (SELECT t.學生ID 學生ID, t.數據庫 數據庫, t.企業管理 企業管理, t.英語 英語, (CASE WHEN t.數據庫 IS NULL THEN 0 ELSE 1 END)+(CASE WHEN t.企業管理 IS NULL THEN 0 ELSE 1 END)+(CASE WHEN t.英語 IS NULL THEN 0 ELSE 1 END) 有效課程數, IFNULL(t.數據庫,0)+IFNULL(t.企業管理,0)+IFNULL(t.英語,0) 總分 FROM (SELECT stu.sid 學生ID, s.c 數據庫,q.c 企業管理,y.c 英語 FROM student stu LEFT JOIN (SELECT sc.sid n,sc.score c FROM sc ,course c WHERE sc.cid=c.cid AND c.cName ='數據庫') s ON stu.sid=s.n LEFT JOIN (SELECT sc.sid n,sc.score c FROM sc ,course c WHERE sc.cid=c.cid AND c.cName ='企業管理') q ON stu.sid=q.n LEFT JOIN (SELECT sc.sid n,sc.score c FROM sc ,course c WHERE sc.cid=c.cid AND c.cName ='英語') Y ON stu.sid=y.n )t )p ORDER BY 有效平均分 DESC;
MySQL判斷為null,寫法為is null,而不是 t.數據庫 = NULL
IFNULL(expr1,expr2)
如果expr1不是NULL,IFNULL()返回expr1,否則它返回expr2。IFNULL()返回一個數字或字符串值