hive数据库有一张学生表和一张班级表,学生表有学生ID,name,语文 数学,英文 ,班级id,班级表有classid和classname,编写一个SQL算出每个班级的语文数学英语的平均成绩
时间: 2024-10-27 12:13:48 浏览: 27
Hive小表的测试数据
你可以使用Hive SQL的JOIN和GROUP BY语句来实现这个需求。假设学生的成绩存储在一个名为`grades`的临时表中,其结构包括`student_id`, `subject`(如语文、数学、英文),以及`score`字段。这里是一个示例查询:
```sql
CREATE TEMPORARY TABLE grades
AS
SELECT s.student_id, g.subject, g.score
FROM students s
JOIN (
SELECT classid, subject, AVG(score) as avg_score
FROM scores
GROUP BY classid, subject
) g ON s.classid = g.classid;
SELECT classname, '语文' AS Chinese_Avg, '数学' AS Math_Avg, '英文' AS English_Avg
FROM grades
WHERE subject IN ('语文', '数学', '英文')
GROUP BY classname;
```
在这个查询中,首先通过JOIN将学生表(`students`)和分数表(`scores`)关联起来,并计算每个班级每门学科的平均分。然后,从临时表中选择出每个班级的语文、数学和英文的平均成绩。
阅读全文