--- loncom/interface/loncoursedata.pm 2004/03/23 16:35:15 1.127 +++ loncom/interface/loncoursedata.pm 2004/03/26 22:01:30 1.128 @@ -1,6 +1,6 @@ # The LearningOnline Network with CAPA # -# $Id: loncoursedata.pm,v 1.127 2004/03/23 16:35:15 matthew Exp $ +# $Id: loncoursedata.pm,v 1.128 2004/03/26 22:01:30 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -2004,19 +2004,36 @@ sub get_problem_statistics { $dbh->do($request); # # Collect the first suite of statistics - $request = 'SELECT COUNT(*),SUM(tries),MAX(tries),AVG(tries),STD(tries) '. + $request = 'SELECT COUNT(*),SUM(tries),'. + 'AVG(tries),STD(tries) '. 'FROM '.$stats_table; - my ($num,$tries,$mod,$mean,$STD) = &execute_SQL_request + my ($num,$tries,$mean,$STD) = &execute_SQL_request ($dbh,$request); + # + $request = 'SELECT MAX(tries),MIN(tries) FROM '.$stats_table. + ' WHERE awarded>0'; + if (defined($time_requirements)) { + $request .= ' AND '.$time_requirements; + } + my ($max,$min) = &execute_SQL_request($dbh,$request); + # $request = 'SELECT SUM(awarded) FROM '.$stats_table; + if (defined($time_requirements)) { + $request .= ' AND '.$time_requirements; + } my ($Solved) = &execute_SQL_request($dbh,$request); + # $request = 'SELECT SUM(awarded) FROM '.$stats_table. " WHERE solved='correct_by_override'"; + if (defined($time_requirements)) { + $request .= ' AND '.$time_requirements; + } my ($solved) = &execute_SQL_request($dbh,$request); # $num = 0 if (! defined($num)); $tries = 0 if (! defined($tries)); - $mod = 0 if (! defined($mod)); + $max = 0 if (! defined($max)); + $min = 0 if (! defined($min)); $STD = 0 if (! defined($STD)); $Solved = 0 if (! defined($Solved)); $solved = 0 if (! defined($solved)); @@ -2027,11 +2044,13 @@ sub get_problem_statistics { # my $SKEW = 'nan'; my $wrongpercent = 0; + my $numwrong = 'nan'; if ($num > 0) { ($SKEW) = &execute_SQL_request($dbh,'SELECT SQRT(SUM('. 'POWER(tries - '.$STD.',3)'. '))/'.$num.' FROM '.$stats_table); - $wrongpercent=int(10*100*($num-$Solved+$solved)/$num)/10; + $numwrong = $num-$Solved; + $wrongpercent=int(10*100*$numwrong/$num)/10; } # # Drop the temporary table @@ -2055,12 +2074,14 @@ sub get_problem_statistics { # Return result return { num_students => $num, tries => $tries, - max_tries => $mod, + max_tries => $max, + min_tries => $min, mean_tries => $mean, std_tries => $STD, skew_tries => $SKEW, num_solved => $Solved, num_override => $solved, + num_wrong => $numwrong, per_wrong => $wrongpercent, deg_of_diff => $DegOfDiff }; }