Mnożysz kwotę płatności przez liczbę rekordów sprzedaży, ponieważ przed zsumowaniem kwot łączysz wszystkie rekordy płatności ze wszystkimi rekordami sprzedaży.
Najpierw agreguj, a dopiero potem dołącz.
W przypadku, gdy zawsze może istnieć tylko jeden rekord płatności na datę, godzinę i nazwisko:
select p.name, p.time, p.name, s.sales_total, p.amount
from payments p
join
(
select date, time, name, sum(total) as total
from sales
group by date, time, name
) s
on s.date = p.date and s.time = p.time and s.name = p.name
where p.date = date '2017-04-01';
W przeciwnym razie:
select p.name, p.time, p.name, s.total, p.amount
(
select date, time, name, sum(amount) as amount
from payments
group by date, time, name
) p
join
(
select date, time, name, sum(total) as total
from sales
group by date, time, name
) s
on s.date = p.date and s.time = p.time and s.name = p.name
where p.date = date '2017-04-01';