(2)对每个课程,求学生的选课人数和学生的平均成绩,并把结果存入数据库。使用SELECT INTO 和INSERT INTO 两种方法实现。
时间: 2023-05-25 08:02:11 浏览: 248
使用SELECT INTO实现:
SELECT c.course_id, COUNT(*) AS num_students, AVG(s.score) AS avg_score
INTO course_info
FROM course c
JOIN score s ON c.course_id = s.course_id
GROUP BY c.course_id;
INSERT INTO course_info
SELECT c.course_id, COUNT(*) AS num_students, AVG(s.score) AS avg_score
FROM course c
JOIN score s ON c.course_id = s.course_id
GROUP BY c.course_id;
注意:使用SELECT INTO时,需要先创建好目标表course_info;而使用INSERT INTO时,则无需先创建目标表,只需要保证目标表已经存在即可。这两种方法的结果是一样的。
相关问题
对每个课程,求学生的选课人数和学生的平均成绩,并把结果存入数据库。使用SELECT INTO 和INSERT INTO 两种方法实现。
假设有两个表,一个是学生表(students),包含学生的姓名和学号;另一个是选课表(courses),包含选课的课程名称、学号和成绩。
使用SELECT INTO方法实现:
```
-- 按课程统计选课人数和平均成绩
SELECT courses.course_name, COUNT(*) AS student_count, AVG(courses.score) AS avg_score
INTO course_stats
FROM courses
GROUP BY courses.course_name;
-- 将结果插入数据库
INSERT INTO course_stats (course_name, student_count, avg_score)
SELECT course_name, student_count, avg_score
FROM course_stats;
```
使用INSERT INTO方法实现:
```
-- 创建空表
CREATE TABLE course_stats (
course_name VARCHAR(50),
student_count INT,
avg_score FLOAT
);
-- 按课程统计选课人数和平均成绩,并将结果插入数据库
INSERT INTO course_stats (course_name, student_count, avg_score)
SELECT courses.course_name, COUNT(*) AS student_count, AVG(courses.score) AS avg_score
FROM courses
GROUP BY courses.course_name;
```
(2) 对每个课程,求学生的选课人数和学生的平均成绩,并把结果存入数据库。使用SELECT INTO 和INSERT INTO 两种方法实现。
使用SELECT INTO实现:
```
-- 求每个课程的选课人数和平均成绩,并存入临时表course_temp
SELECT course_id, COUNT(*) AS count, AVG(score) AS avg_score
INTO course_temp
FROM score
GROUP BY course_id;
-- 将临时表course_temp中的数据插入到表course_info中
INSERT INTO course_info(course_id, student_count, avg_score)
SELECT course_id, count, avg_score
FROM course_temp;
-- 删除临时表course_temp
DROP TABLE course_temp;
```
使用INSERT INTO实现:
```
-- 求每个课程的选课人数和平均成绩,并插入到表course_info中
INSERT INTO course_info(course_id, student_count, avg_score)
SELECT course_id, COUNT(*), AVG(score)
FROM score
GROUP BY course_id;
```