Está multiplicando el monto de los pagos con el número de registros de ventas, porque está uniendo todos los registros de pagos con todos los registros de ventas antes de sumar los montos.
Agregue primero y únase solo después.
En caso de que siempre solo pueda haber un registro de pagos por fecha, hora y nombre:
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';
De lo contrario:
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';