Вы можете использовать COUNT(DISTINCT ..)
для пользовательской строки, состоящей из org_id
, country
и text
. Это обеспечит подсчет только их уникальных комбинаций (таким образом, эмулируя GROUP BY и затем COUNT).
Я использовал произвольный разделитель &&
. Если ваш столбец text
или country
может содержать этот разделитель, тогда вы можете использовать в качестве разделителя другую необычную комбинацию символов:
select
COUNT(DISTINCT CONCAT(org_id, '&&', country, '&&', text)),
sum(impressions) as imp,
sum(taps) as taps
from report
where org_id = 1 and report_date between '2019-01-01' and '2019-10-10'
Для хорошей производительности определите следующий составной индекс для таблицы report
: (org_id, report_date)