Mysql第一张表student_info 有学生的学号、姓名、年级level 第二张表有学生学号(有重复,不能简单使用AVG)、该学生完成的志愿活动的时长、求2021级人均工时长
时间: 2023-06-23 10:08:20 浏览: 43
可以通过联结两张表来计算2021级人均工时长。具体的 SQL 语句如下:
```
SELECT AVG(activity_time) AS average_time
FROM student_info
JOIN activity_info ON student_info.student_id = activity_info.student_id
WHERE student_info.level = '2021';
```
这个 SQL 语句使用了 JOIN 操作符将两张表联结,然后通过 WHERE 子句来筛选出 2021 级的学生信息。最后使用 AVG() 聚合函数来计算平均工时长。
相关问题
Mysql第一张表student_info 有学生的学号、姓名、年级level 第二张表有学生学号、该学生完成的志愿活动的时长、求2021级人均工时长
假设第二张表名为activity_record,包含学生学号、该学生完成的志愿活动的时长、记录日期等字段,可以通过以下 SQL 语句求得 2021 级学生的人均工时长:
```
SELECT AVG(activity_record.duration) AS avg_duration
FROM student_info
INNER JOIN activity_record ON student_info.student_id = activity_record.student_id
WHERE student_info.level = '2021';
```
其中,`INNER JOIN` 用于将两个表按照学生学号进行连接,`WHERE` 语句用于限定学生的年级为 2021 级,`AVG` 函数用于求平均值。
Mysql第一张表student_info 有学生的学号、姓名、年级level 第二张表有学生学号(有重复,不能通过AVG(activity_time) AS average_time直接求平均数)、该学生完成的志愿活动的时长、求2021级人均工时长
假设第二张表名为student_activity,其中包含学生学号、活动时长等信息。可以通过以下SQL语句求解2021级人均工时长:
```
SELECT AVG(activity_time) AS average_time
FROM student_activity
WHERE student_id IN (
SELECT student_id
FROM student_info
WHERE level = '2021'
);
```
其中,子查询`SELECT student_id FROM student_info WHERE level = '2021'`筛选出了2021级的学生学号,然后在主查询中使用了`IN`关键字将这些学生的活动时长计算平均数。需要注意的是,由于学生学号可能重复,所以需要根据实际情况对数据进行去重处理。