Bạn đang nhân số tiền thanh toán với số hồ sơ bán hàng, bởi vì bạn đang kết hợp tất cả hồ sơ thanh toán với tất cả hồ sơ bán hàng trước khi tổng hợp số tiền.
Tổng hợp trước và chỉ tham gia sau đó.
Trong trường hợp luôn có thể chỉ có một bản ghi thanh toán cho mỗi ngày, giờ và tên:
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';
Nếu không:
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';