【问题标题】:Getting sub-counts along with Average and Count获取子计数以及平均值和计数
【发布时间】:2015-03-19 08:57:26
【问题描述】:

我有两张桌子...

MODULES                ENROLMENTS
GroupNo                StudentNo
Title                  GroupNo
Tutor                  CourseworkMark
DayNo                  ExamMark
Time
Room
Semester

我希望创建一个视图来显示每个模块在课程作业和考试中取得的平均成绩,以及达到 >70、60-69、50-59、40-49 和

我的平均分数是...

SELECT Title,
       AVG(CourseworkMark) AS AverageCoursework,
       AVG(ExamMark) AS AverageExam
FROM tblModules INNER JOIN tblEnrolments
   ON tblModules.GroupNo = tblEnrolments.GroupNo
GROUP BY Title;

【问题讨论】:

    标签: sql sql-server count average


    【解决方案1】:

    您可以使用 SUMmed CASE 表达式来执行此操作;

    SELECT Title,
           AVG(CourseworkMark) AS AverageCoursework,
           AVG(ExamMark) AS AverageExam,
           SUM(CASE WHEN CourseworkMark > 70 THEN 1 ELSE 0 END) AS CourseworkMarkOver70,
           SUM(CASE WHEN CourseworkMark BETWEEN 60 AND 70 THEN 1 ELSE 0 END) AS CourseworkMarkOver60To69,
           SUM(CASE WHEN CourseworkMark BETWEEN 50 and 59 THEN 1 ELSE 0 END) AS CourseworkMarkOver50To59,
           SUM(CASE WHEN CourseworkMark BETWEEN 40 and 49 THEN 1 ELSE 0 END) AS CourseworkMarkOver40To49,
           SUM(CASE WHEN CourseworkMark < 40 THEN 1 ELSE 0 END) AS CourseworkMarkUnder40
    FROM tblModules INNER JOIN tblEnrolments
       ON tblModules.GroupNo = tblEnrolments.GroupNo
    GROUP BY Title;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-19
      相关资源
      最近更新 更多