При попытке получить количество идентификаторов я получаю другой ответ, когда группируюсь по дням, а когда нет.Различные выходные данные при использовании счетчика и группы по
select cv.CONV_DAY, count(distinct cv.CLICK_ID)
from
clickcache.click cc
right join(
select distinct cv.CLICK_ID, cv.CONV_DAY, cv.PIXEL_ID
from clickcache.CONVERSION cv
where cv.CLICK_ID IS NOT NULL) cv ON cv.CLICK_ID = cc.ID
where cc.ADV_ACCOUNT_ID = 25176
and cv.CONV_DAY between '2016-8-01' AND '2016-08-07'
and AMP_CLICK_STATUS_ID = 1
AND pixel_id IN
(SELECT DISTINCT conversion_pixel_id
FROM
ampx.campaign_event_funnel ef
JOIN ampx.campaign cp ON
cp.id = ef.campaign_id
AND cp.campaign_status_id = 1
WHERE
ef.account_id IN(25176)
AND include_optimization = 1)
group by 1
order by 1 asc
Это дает 170, который является правильным ответом, и я хочу. Это, с другой стороны, показывает 157.
select count(distinct cv.CLICK_ID)
from
clickcache.click cc
right join(
select distinct cv.CLICK_ID, cv.CONV_DAY, cv.PIXEL_ID
from clickcache.CONVERSION cv
where cv.CLICK_ID IS NOT NULL) cv ON cv.CLICK_ID = cc.ID
where cc.ADV_ACCOUNT_ID = 25176
and cv.CONV_DAY between '2016-8-01' AND '2016-08-07'
and AMP_CLICK_STATUS_ID = 1
AND pixel_id IN
(SELECT DISTINCT conversion_pixel_id
FROM
ampx.campaign_event_funnel ef
JOIN ampx.campaign cp ON
cp.id = ef.campaign_id
AND cp.campaign_status_id = 1
WHERE
ef.account_id IN(25176)
AND include_optimization = 1)
Мой вопрос, почему я получаю это несоответствие и как это исправить, чтобы получить правильное количество?
Спасибо!
Если вы группируете данные по дням, 'count' не должен превышать общий' count', а скорее подмножество на основе дня. Возможно, у вас есть 170 дней и думаете, что это граф? Примерные данные и ожидаемые результаты были бы полезны ... – sgeddes
Я думаю, что те же 'cv.CLICK_ID' получили разные дни, поэтому сумма CLICK_ID за каждый день больше, чем счетчик CLICK_ID в таблице. – valex