mirror of
https://github.com/moodle/moodle.git
synced 2025-08-05 08:56:36 +02:00
MDL-30734 question engine: sum_usage_marks_subquery edge-case.
When all qas in a useage are 'gaveup' state, it gives NULL, not 0.0, for the total.
This commit is contained in:
parent
f89a83b87b
commit
ad73a2cb4e
1 changed files with 5 additions and 1 deletions
|
@ -851,7 +851,11 @@ ORDER BY
|
||||||
* @return string SQL code for the subquery.
|
* @return string SQL code for the subquery.
|
||||||
*/
|
*/
|
||||||
public function sum_usage_marks_subquery($qubaid) {
|
public function sum_usage_marks_subquery($qubaid) {
|
||||||
return "SELECT SUM(qa.maxmark * qas.fraction)
|
// To explain the COALESCE in the following SQL: SUM(lots of NULLs) gives
|
||||||
|
// NULL, while SUM(one 0.0 and lots of NULLS) gives 0.0. We don't want that.
|
||||||
|
// We always want to return a number, so the COALESCE is there to turn the
|
||||||
|
// NULL total into a 0.
|
||||||
|
return "SELECT COALESCE(SUM(qa.maxmark * qas.fraction), 0)
|
||||||
FROM {question_attempts} qa
|
FROM {question_attempts} qa
|
||||||
JOIN {question_attempt_steps} qas ON qas.id = (
|
JOIN {question_attempt_steps} qas ON qas.id = (
|
||||||
SELECT MAX(summarks_qas.id)
|
SELECT MAX(summarks_qas.id)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue