- 预审中
- 2 预审通过
- 3 已采纳
- 4 已实现
【用户体验】Hccdp-GuassDB的实验练习《GaussDB数据库高级SQL》中7.利用with实现复杂查询语句拆分练习,sql脚本有误 预审通过 编辑 删除
- 云数据库 GaussDB
- 开发者认证
- 数据库
- 开发者学堂
场景描述:
实验要求是求平均分top3的班级各科均分情况,实验手册中原sql是
WITH class_subject_avg_score AS(
SELECT class_no,
subject_name,
avg(score) AS subject_avg_score
FROM school_subject_scores GROUP BY class_no, subject_name
), top_class_no AS (
SELECT class_no
FROM class_subject_avg_score
GROUP BY class_no
ORDER BY sum(subject_avg_score) DESC LIMIT 3
) SELECT class_no,
subject_name,
subject_avg_score
FROM class_subject_avg_score
WHERE class_no IN ( SELECT class_no FROM top_class_no) ORDER BY class_no, subject_name;
建议方案:
上述sql中,top_class_no 部分获取平均分前3的班级是直接把class_subject_avg_score中各科目的平均分相加,若班级中存在学生只有部分科目有成绩,按此种实现方式,算出来的平均分前3并不准确,建议修改sql为:
WITH class_subject_avg_score AS(
SELECT class_no,
subject_name,
avg(score) AS subject_avg_score
FROM school_subject_scores GROUP BY class_no, subject_name
), top_class_no AS (
SELECT class_no
FROM school_subject_scores
GROUP BY class_no
ORDER BY avg(score) DESC LIMIT 3
) SELECT class_no,
subject_name,
subject_avg_score
FROM class_subject_avg_score
WHERE class_no IN ( SELECT class_no FROM top_class_no) ORDER BY class_no, subject_name;
yd_255061142
发布于 2025-09-09 15:05:47
2025-09-09
194 1
0/1000
仅支持JPG、JPEG、PNG、GIF,数量不超过4张且每张大小不超过2MB
删除建议
全部评论(1)
评论(1)
非常感谢您的反馈,您的建议和诉求已经收到,并已提交至相关产品团队进行核查评估,评估完成后对于建议是否采纳会尽快给您答复,也请您持续关注云声平台,了解反馈建议处理进展,感谢您对华为云的支持!