Jika saya memahami logika dengan benar, masalahnya adalah produk Cartesian yang disebabkan oleh dua gabungan. Permintaan Anda agak sulit untuk diikuti, tetapi saya pikir maksudnya lebih baik ditangani dengan subkueri yang berkorelasi:
select k.*,
(select sum(cost)
from ad_group_keyword_network n
where n.event_date >= '2015-12-27' and
n.ad_group_keyword_id = 1210802 and
k.id = n.ad_group_keyword_id
) as cost,
(select sum(clicks)
from keyword_click c
where (c.date is null or c.date >= '2015-12-27') and
k.keyword_id = c.keyword_id
) as clicks
from ad_group_keyword k
where k.status = 2 ;
Di sini adalah SQL Fiddle yang sesuai.
EDIT:
Subpilihan harus lebih cepat daripada group by
pada data yang tidak teragregasi. Namun, Anda memerlukan indeks yang tepat:ad_group_keyword_network(ad_group_keyword_id, ad_group_keyword_id, event_date, cost)
dan keyword_click(keyword_id, date, clicks)
.