為了更好地管理學(xué)生成績,現(xiàn)在我們需要在MySQL中建立每個(gè)班級(jí)的成績平均分表。下面我們將詳細(xì)介紹如何在MySQL中創(chuàng)建該表。
首先,我們需要在MySQL中創(chuàng)建一個(gè)學(xué)生信息表和一個(gè)成績信息表。學(xué)生信息表包含學(xué)生ID、姓名、性別、年齡等字段。成績信息表包含學(xué)生ID、科目、成績等字段。
CREATE TABLE `student_info` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `gender` varchar(10) NOT NULL, `age` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `score_info` ( `id` int(11) NOT NULL AUTO_INCREMENT, `student_id` int(11) NOT NULL, `subject` varchar(20) NOT NULL, `score` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
接著,我們可以使用以下代碼將學(xué)生信息表和成績信息表連接起來,并以班級(jí)為單位計(jì)算平均分。
SELECT t1.name AS name, AVG(t2.score) AS avg_score FROM student_info t1 JOIN score_info t2 ON t1.id = t2.student_id GROUP BY t1.name;
在上述代碼中,我們使用了JOIN語句將兩個(gè)表連接起來。在GROUP BY語句中,我們以學(xué)生姓名為單位進(jìn)行分組,并使用AVG語句計(jì)算每個(gè)學(xué)生的平均分。
最后,我們將以上代碼封裝成一個(gè)存儲(chǔ)過程,方便以后使用。
DELIMITER $$ CREATE PROCEDURE `class_avg_score`() BEGIN SELECT t1.name AS name, AVG(t2.score) AS avg_score FROM student_info t1 JOIN score_info t2 ON t1.id = t2.student_id GROUP BY t1.name; END$$ DELIMITER ;
現(xiàn)在,我們成功地在MySQL中建立了每個(gè)班級(jí)的成績平均分表,并封裝成了一個(gè)存儲(chǔ)過程,方便以后使用。