加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – 从数据库中获取上述普通学生

发布时间:2020-12-12 06:52:32 所属栏目:MsSql教程 来源:网络整理
导读:我创建了一个包含以下内容的视图: student_full_name subject_code result Jennifer Higgins CS1234 81 Jennifer Higgins CS1235 90 Kal Penn CS1234 70 Kal Penn CS1235 60 Han Solo CS1234 45 Han Solo CS1235 70 我想得到: 每个学生的平均成绩就像詹妮弗
我创建了一个包含以下内容的视图:
student_full_name    subject_code    result
 Jennifer Higgins     CS1234          81
 Jennifer Higgins     CS1235          90
 Kal Penn             CS1234          70
 Kal Penn             CS1235          60
 Han Solo             CS1234          45
 Han Solo             CS1235          70

我想得到:

>每个学生的平均成绩就像詹妮弗希金斯参加CS1234和CS1235一样.
她的平均分数是85.50.
>然后将Jennifer Higgins的分数与所有入学人数的平均分数进行比较
所以总计所有科目的AVG(结果).
>然后查询将列出所有获得高于平均分数的学生.

我知道我必须在这里使用子查询才能获得所有结果的AVG.
嗯,这是一种伪代码.我很困惑,因为我不确定如何使子查询与查询的结果进行比较.
我很确定我需要两个group by语句,一个用于student_full_name分组,另一个用于获得所有平均结果.

SELECT student_full_name,AVG(results) AS average_result
 FROM viewEnrol
 WHERE average_result > ( SELECT (AVG(results))
                          FROM viewEnrol

 GROUP BY student_full_name

//编辑

输出应该是这样的. Kal Penn和Han Solo没有列出,因为他们没有达到高于平均水平.
所有科目的平均分为69.33. Han Solo得到57.5,Kal Penn得到65.

student_full_name    subject_code    result
 Jennifer Higgins     CS1234          85.5

有帮助吗?

解决方法

这应该做的工作.第一个内部查询将为您提供所有学生的平均结果.
虽然第二个将给表格的平均值.
SELECT student_full_name 
    FROM (SELECT student_full_name,AVG(results) AS average_Sresult
          FROM viewEnrol
          GROUP BY student_full_name) sre,(SELECT (AVG(results)) tavg
          FROM viewEnrol) ta
     WHERE sre.average_Sresult > ta.tavg

PS:你不应该采取avg avg而不是平均所有结果.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读