Sie haben mehrere Zeilen in der Kredittabelle, dies macht mehrere Zeilen vor der Gruppe, durch die das Problem verursacht wird. Sie können dies sehen, wenn Sie die Gruppierung nach entfernen und alle Spalten auswählen.
Wenn Sie in einer Unterverknüpfung gruppieren, verschwindet dieses Problem, dann haben Sie eine Zeile pro Kunde vor der Gruppierung.
SELECT
customers.id as id,
customers.cust_name AS customer_name,
SUM(cust_debit.debit_amount) as debit,
SUM(cust_credit.credit_amount) as credit,
(SUM(cust_debit.debit_amount)) - (SUM(cust_credit.credit_amount)) as balance
FROM customers
LEFT JOIN cust_debit ON customers.id = cust_debit.cust_id
LEFT JOIN (
SELECT cust_id, sum(credit_amount) as credit_amount)
from cust_credit
group by cust_id
) cust_credit ON customers.id = cust_credit.cust_id
GROUP BY customers.id
ORDER BY customers.id