आप भुगतान राशि को बिक्री रिकॉर्ड की संख्या से गुणा कर रहे हैं, क्योंकि आप सभी भुगतान रिकॉर्ड को सभी बिक्री रिकॉर्ड के साथ जोड़ रहे हैं, इससे पहले कि आप राशि का योग करें।
पहले एकत्र करें, और उसके बाद ही शामिल हों।
मामले में प्रति दिनांक, समय और नाम के लिए हमेशा केवल एक भुगतान रिकॉर्ड हो सकता है:
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';
अन्यथा:
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';