Mess_Word

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个例子: 首先,我们需要在MySQL中创建一个表`mess_xk`来存储选课信息。打开MySQL命令行或者使用MySQL客户端,输入以下代码: ``` CREATE TABLE `mess_xk` ( `id` int(11) NOT NULL AUTO_INCREMENT, `xk_id` int(11) NOT NULL, `sc_id` int(11) NOT NULL, `xk_sc` float NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ``` 然后,我们需要向`mess_xk`表中插入一些数据作为测试数据。输入以下代码: ``` INSERT INTO `mess_xk` (`xk_id`, `sc_id`, `xk_sc`) VALUES (1, 1, 90), (1, 2, 80), (2, 1, 85), (2, 2, 90), (2, 3, 95), (3, 1, 75), (3, 3, 80), (4, 2, 70), (5, 1, 80), (5, 2, 85), (5, 3, 90), (5, 4, 95); ``` 接下来,我们需要创建一个存储过程来实现统计选课表中每门课程的选课人数及平均成绩的功能。打开MySQL命令行或者使用MySQL客户端,输入以下代码: ``` DELIMITER $$ CREATE PROCEDURE `course_statistics`() BEGIN DECLARE course_name CHAR(50); DECLARE total_selected INT; DECLARE avg_score FLOAT; DECLARE done INT DEFAULT FALSE; DECLARE cur CURSOR FOR SELECT DISTINCT xk_id FROM mess_xk; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; CREATE TEMPORARY TABLE temp_table ( xk_id INT, total_selected INT, avg_score FLOAT ); OPEN cur; read_loop: LOOP FETCH cur INTO course_name; IF done THEN LEAVE read_loop; END IF; SELECT COUNT(*) INTO total_selected FROM mess_xk WHERE xk_id = course_name; SELECT AVG(xk_sc) INTO avg_score FROM mess_xk WHERE xk_id = course_name; INSERT INTO temp_table (xk_id, total_selected, avg_score) VALUES (course_name, total_selected, avg_score); END LOOP; CLOSE cur; SELECT * FROM temp_table; DROP TEMPORARY TABLE temp_table; END$$ DELIMITER ; ``` 然后,我们就可以调用这个存储过程来统计选课表中每门课程的选课人数及平均成绩了。输入以下代码: ``` CALL course_statistics(); ``` 执行之后,就会输出每门课程的选课人数及平均成绩。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值