diff --git a/app/controllers/execution_environments_controller.rb b/app/controllers/execution_environments_controller.rb index af4323b3..89470996 100644 --- a/app/controllers/execution_environments_controller.rb +++ b/app/controllers/execution_environments_controller.rb @@ -31,7 +31,7 @@ class ExecutionEnvironmentsController < ApplicationController def working_time_query """ - SELECT exercise_id, avg(working_time) as average_time + SELECT exercise_id, avg(working_time) as average_time, stddev_samp(extract('epoch' from working_time)) * interval '1 second' as stddev_time FROM ( SELECT user_id, @@ -62,6 +62,7 @@ class ExecutionEnvironmentsController < ApplicationController COUNT(DISTINCT user_id) AS users, AVG(score) AS average_score, MAX(score) AS maximum_score, + stddev_samp(score) as stddev_score, CASE WHEN MAX(score)=0 THEN 0 ELSE 100 / MAX(score) * AVG(score) diff --git a/app/views/execution_environments/statistics.html.slim b/app/views/execution_environments/statistics.html.slim index 2c504478..36d505b2 100644 --- a/app/views/execution_environments/statistics.html.slim +++ b/app/views/execution_environments/statistics.html.slim @@ -4,19 +4,22 @@ h1 = @execution_environment table.table.table-striped.sortable thead tr - - ['.exercise', '.users', '.score', '.maximum_score', '.percentage_correct', '.runs', '.worktime'].each do |title| + - ['.exercise', '.users', '.score', '.maximum_score', '.stddev_score', '.percentage_correct', '.runs', '.worktime', '.stddev_worktime'].each do |title| th.header = t(title) tbody - @execution_environment.exercises.each do |exercise| - us = user_statistics[exercise.id] - - if not us then us = {"users" => 0, "average_score" => 0.0, "maximum_score" => 0, "percent_correct" => nil, "average_submission_count" => 0} + - if not us then us = {"users" => 0, "average_score" => 0.0, "maximum_score" => 0, "stddev_score" => 0.0, "percent_correct" => nil, "average_submission_count" => 0} - wts = working_time_statistics[exercise.id] - if wts then average_time = wts["average_time"] else 0 + - if wts then stddev_time = wts["stddev_time"] else 0 tr td = link_to exercise.title, controller: "exercises", action: "statistics", id: exercise.id td = us["users"] td = us["average_score"] td = us["maximum_score"] + td = us["stddev_score"] td = us["percent_correct"] td = us["average_submission_count"] td = average_time + td = stddev_time diff --git a/config/locales/de.yml b/config/locales/de.yml index a09f13bf..683c1dff 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -171,6 +171,8 @@ de: exercise: Übung users: Anzahl (externer) Nutzer score: Durchschnittliche Punktzahl + stddev_score: stdabw (Punktzahl) + stddev_worktime: stdabw (Arbeitszeit) maximum_score: Maximale Punktzahl percentage_correct: Prozent Korrekt runs: Durchschnittliche Anzahl von Versuchen diff --git a/config/locales/en.yml b/config/locales/en.yml index 7abde2fa..823fe864 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -171,6 +171,8 @@ en: exercise: Exercise users: (External) Users Count score: Average Score + stddev_score: stddev (score) + stddev_worktime: stddev (working time) maximum_score: Maximum Score percentage_correct: Percentage Correct runs: Average Number of Runs