Sie multiplizieren den Zahlungsbetrag mit der Anzahl der Verkaufsdatensätze, weil Sie alle Zahlungsdatensätze mit allen Verkaufsdatensätzen verknüpfen, bevor Sie die Beträge summieren.
Erst aggregieren und erst dann beitreten.
Falls es immer nur einen Zahlungssatz pro Datum, Uhrzeit und Name geben kann:
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';
Ansonsten:
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';