Я подозреваю, что проблема, возможно, связана не с запросом как таковым, а с обработкой результата и помещением его в Int.
Я не верю, что вам вообще нужен COALESCE, а не два случая, так как агрегатная функция total отличается от функции sum тем, что она неreturn null согласно: -
Агрегатные функции sum () и total () возвращают сумму всех ненулевых значений в группе. Если нет входных строк, отличных от NULL, то sum () возвращает NULL, а total () возвращает 0.0. сумма (X) всего (X)
Результатом вышеизложенного является то, что, как я подозреваю, происходит. Вы получаете число с плавающей запятой с десятичной точкой, которое затем не может быть преобразовано в Int, и возвращается ноль.
Вы можете попробовать использовать: -
SELECT CAST(total(amount) AS INTEGER) from databasetransaction;