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

前端之家收集整理的这篇文章主要介绍了sql-server – 从数据库中获取上述普通学生前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我创建了一个包含以下内容的视图:
  1. student_full_name subject_code result
  2. Jennifer Higgins CS1234 81
  3. Jennifer Higgins CS1235 90
  4. Kal Penn CS1234 70
  5. Kal Penn CS1235 60
  6. Han Solo CS1234 45
  7. Han Solo CS1235 70

我想得到:

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

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

  1. SELECT student_full_name,AVG(results) AS average_result
  2. FROM viewEnrol
  3. WHERE average_result > ( SELECT (AVG(results))
  4. FROM viewEnrol
  5.  
  6. GROUP BY student_full_name

//编辑

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

  1. student_full_name subject_code result
  2. Jennifer Higgins CS1234 85.5

有帮助吗?

解决方法

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

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

猜你在找的MsSQL相关文章