Вы можете перефразировать запрос:
select sum(ic.cnt * coalesce(nb.cnt, 1))
from (select line_no, bus_no, count(*) as cnt
from ic_card_trade ic
group by line_no, bus_no
) ic left join
(select line_no, bus_no, count(*) as cnt
from netpack_busstop nb
group by line_no, bus_no
) nb
on ic.line_no = nb.line_no and
ic.bus_no = nb.bus_no;
То есть сначала выполните агрегирование , а затем вычислите число полученных строк.