全部建议 > 建议详情
  • 预审中
  • 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 yd_255061142 发布于 2025-09-09 15:05:47 2025-09-09

194 1

0%
0人赞同
0%
0人不赞同

全部评论(1

评论(1

  • 【云声小管家】 子规 2025-09-09 15:44:55

    非常感谢您的反馈,您的建议和诉求已经收到,并已提交至相关产品团队进行核查评估,评估完成后对于建议是否采纳会尽快给您答复,也请您持续关注云声平台,了解反馈建议处理进展,感谢您对华为云的支持!

登录后可评论,请 注册

0/1000

+ 插入图片0/4

仅支持JPG、JPEG、PNG、GIF,数量不超过4张且每张大小不超过2MB

评论
发表评论...
取消 发表

0/1000

评论成功

+ 插入图片0/4

仅支持JPG、JPEG、PNG、GIF,数量不超过4张且每张大小不超过2MB

删除建议

设置昵称

在此一键设置昵称,即可发表云声建议!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。