现有表1,字段信息如图左,我想得出右边结果,平均分小于80的班级人员学科得分,每个人还要统计学科总分,请问要怎么改呢?没什么头绪
select 班级,姓名,学科,得分
from 表1
group by 班级
having avg(得分)<80
-- 先求出平均分小于80的班级,以此作为子查询获取科目分数和合计分数
SELECT
班级
,姓名
,学科
,得分
FROM 表1
WHERE 班级 IN
(
SELECT 班级
FROM 表1
GROUP BY 班级
HAVING AVG(得分) < 80
)
UNION ALL
SELECT
班级
,姓名
,'学科合计' as 学科
,SUM(得分) as 得分
FROM 表1
WHERE 班级 IN
(
SELECT 班级
FROM 表1
GROUP BY 班级
HAVING AVG(得分) < 80
)
GROUP BY
班级
,姓名
;
你的代码呢?而且你可以试试Excel
不知道你这个问题是否已经解决, 如果还没有解决的话:问题描述中提到了一个数据库表格,包含学生的姓名、班级、学科和得分等信息。要求找出平均分低于80的班级的学生在各科的成绩,并计算每个学生在各科的总分。问题中给出了一段SQL语句,但没有得到预期的结果。下面是解决该问题的具体步骤和代码:
SELECT 班级, 姓名, 学科, 得分
FROM 表1
GROUP BY 班级, 姓名, 学科, 得分
HAVING AVG(得分) < 80
SELECT 班级, 姓名, 学科, 得分, SUM(得分) AS 总分
FROM 表1
GROUP BY 班级, 姓名, 学科, 总分
HAVING AVG(得分) < 80
ORDER BY 班级, 姓名, 学科
这样修改后的SQL语句能够满足问题要求,即找出平均分低于80的班级的学生在各科的成绩,并计算每个学生在各科的总分。