Sample Header Ad - 728x90

Average Value not working

0 votes
1 answer
628 views
I have a database of students and grades across varying report cycles. Each Report Cycle has a unique ID and each subject also has a unique ID. Students can have more than one teacher per subject so I need to average the grades given and produce just the averaged grade for their attainment scores. An example of the raw data is below: +--------------+------+-----+----+-------------+---+ | 223599152142 | 12 | 92 | 3 | Mathematics | 0 | | 223599152142 | 12 | 92 | 3 | Mathematics | 3 | | 223599152142 | 12 | 92 | 7 | History | 3 | | 223599152142 | 12 | 92 | 12 | Economics | 3 | | 223599152142 | 12 | 92 | 12 | Economics | 4 | | 223599152142 | 12 | 92 | 26 | Latin | 2 | | 223599152142 | 12 | 109 | 3 | Mathematics | 3 | | 223599152142 | 12 | 109 | 3 | Mathematics | 4 | | 223599152142 | 12 | 109 | 7 | History | 3 | | 223599152142 | 12 | 109 | 26 | Latin | 2 | | 223599152142 | 12 | 109 | 26 | Latin | 3 | | 223599152142 | 12 | 110 | 3 | Mathematics | 4 | | 223599152142 | 12 | 110 | 7 | History | 2 | | 223599152142 | 12 | 110 | 7 | History | 3 | | 223599152142 | 12 | 110 | 26 | Latin | 2 | | 223599152142 | 12 | 110 | 26 | Latin | 3 | +--------------+------+-----+----+-------------+---+ I wish to average the GradeTransposeValue based on the SubjectID for each ReportCycleID, but I am getting odd results. I have set up the below query to just focus on one student and one report cycle to show the problem. SELECT intSubjectID, txtCurrentSubjectReportName, CAST(AVG(intGradeTransposeValue) AS decimal (5,2)) AS avg_attainment FROM VwReportsManagementAcademicReports WHERE intReportCycleAcademicYear = 2017 AND intNCYear >6 AND intGradeID = 1 AND txtSchoolID = 223599152142 AND intReportCycleID= 110 GROUP BY intSubjectID, txtCurrentSubjectReportName This is producing this result +--------------+-----------------------------+----------------+ | intSubjectID | txtCurrentSubjectReportName | avg_attainment | +--------------+-----------------------------+----------------+ | 7 | History | 2.00 | | 26 | Latin | 2.00 | | 3 | Mathematics | 4.00 | +--------------+-----------------------------+----------------+ However, if we look at Latin as an example, the original values were 3 and 2, so 3+2 = 5 / 2 should = 2.5 and not 2. Any help on this would be much appreciated.
Asked by MIS_Gem (161 rep)
Apr 3, 2018, 02:34 PM
Last activity: Apr 3, 2018, 03:31 PM