按平均成績從高到低顯示所有學生的“數據庫”、“企業管理”、“英語”三門的課程成績,按如下形式顯示: 學生ID,,數據庫,企業管理,英語,有效課程數,有效平均分


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()返回一個數字或字符串值


免責聲明!

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



猜您在找 按平均成績從高到低顯示所有學生的“數據庫”、“企業管理”、“英語”三門的課程成績,按如下形式顯示: 學生ID,,數據庫,企業管理,英語,有效課程數,有效平均分 【sql:練習題】按平均成績從高到低顯示所有學生的所有課程的成績以及平均成績 學生成績表數據包括:學號,姓名,高數,英語和計算機三門課成績,計算每個學生總分,每課程平均分,最高分和最低分 練習9--檢索"01"課程分數小於60,按分數降序排列的學生信息 | 按平均成績從高到低顯示所有學生的所有課程的成績以及平均成績 Oracle數據庫作業-6 查詢成績比該課程平均成績低的同學的成績表 【C語言】利用文本編輯軟件在磁盤上建立一個有n個學生的學號、姓名及英語、數學和計算機三門課程成績的數據文件。編寫程序將數據文件讀入,且求出每個學生的平均成績。 有10個學生,每個學生的數據包括學號、姓名、3門課程的成績,從鍵盤輸人10個學生數據,要求輸出3門課程總平均成績,以及最高分的學生的數據(包括學號、姓名、3門課程成績、平均分數) 有10個學生,每個學生的數據包括學號、姓名、3門課程的成績,從鍵盤輸人10個學生數據,要求輸出3門課程總平均成績,以及最高分的學生的數據(包括學號、姓名、3門課程成績、平均分數) 數據庫-查詢“001”課程比“002”課程成績高的所有學生的學號 /* * 有五個學生,每個學生有3門課的成績,從鍵盤輸入以上數據 *(包括學生號,姓名,三門課成績),計算出平均成績, *將原有的數據和計算出的平均分數存放在磁盤文件"stud"中。 */
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM