первое число отличное (не нулевое) значение для кортежа t1.id, t1.surcharge_value
второй подсчитывает отличное (не нулевое) значение только в том случае, если условие WHEN t1.surcharge_value! = '0.00' равно TRUE, потому что в этом случае возвращается строка
в других случаях возвращает ноль, и это значение не учитывается
в вашей выборке первый retunr 1 (отличный 1, 5,00) означал количество строк с кортежем, не равным NULL
Во второй вы проверяете строку и число 5.00! = '0.00'
в этом случае всегда! = и
второе возвращаемое значение 1, потому что независимо от значения CONCAT (t1.id, "_", t1.surcharge_value) всегда NOT NULL
но для значения (1, 5,00), (1, 0,00)
первый возврат 2 и второй возврат 1
удаление "_" приводит к тому же результату, только если какое-либо значение для surcharge_value равно! = Из '0.00'