Вы можете сделать union all
и затем снова агрегировать:
SELECT ref, SUM(free_clicks), SUM(paid_clicks),
SUM(free_clicks + paid_clicks)
FROM ((SELECT ref, COUNT(ref) AS free_clicks, 0 as paid_clicks
FROM click_analytics_free
WHERE link_id = ?
GROUP BY ref
) UNION ALL
(SELECT ref, 0, COUNT(ref) AS paid_clicks
FROM click_analytics_paid
WHERE link_id = ?
GROUP BY ref
)
) c
GROUP BY ref;
?
является заполнителем параметра. Ваш код должен использовать параметры, а не подбирать строки запроса.