Я пытаюсь получить количество уникальных посетителей.Сначала я проверил его по общему количеству, не отделяя его ни в какое время.
Основная таблица (выборка из таблицы больших данных):
+-----------+----+-------+
|theDateTime|vD | vis |
+----------------+-------+
|2018-10-03 |123 |abc |
|2018-10-04 |123 |abc |
|2018-10-04 |123 |pqr |
|2018-10-05 |123 |xyz |
+-----------+----+-------+
, общее общее число вышеупомянутых будет равно 3, но когда я группирую по дням, abc
подсчитывается дважды.Сначала 3-го, а затем 2-го.Я просто хочу, чтобы подсчитался первый.
Мой запрос на общую сумму:
select
d.eId AS vD
, COUNT(DISTINCT visitorId) AS vis
from decisions
WHERE d.eId = 123
AND timestamp BETWEEN unix_timestamp('2018-10-03 00:00:00')*1000 AND
unix_timestamp('2018-10-06 12:17:00')*1000
GROUP BY d.eId
ORDER BY vId
Мои результаты:
+----+---------+
| vD | vis |
+----+---------+
|123 | 3 |
+----+---------+
Мой запрос на день:
select DISTINCT
cast(from_unixtime(timestamp DIV 1000) AS date) AS theDateTime
, d.eId AS vD
, COUNT(DISTINCT visitorId) AS vis
from decisions
WHERE timestamp BETWEEN unix_timestamp('2018-10-03 00:00:00')*1000 AND
unix_timestamp('2018-10-06 12:17:00')*1000
AND d.eId IN (11550123588)
GROUP BY cast(from_unixtime(timestamp DIV 1000) AS date),
d.vD
ORDER BY vD, theDateTime
Мои результаты:
+-----------+----+-------+
|theDateTime|vD | vis |
+----------------+-------+
|2018-10-03 |123 | 1 |
|2018-10-04 |123 | 2 |
|2018-10-05 |123 | 1 |
+-----------+----+-------+
Итого это 1122585 .Что больше, чем общая сумма
Я знаю, что это потому, что просто, если посетитель повторяется в другой день, и когда я группирую по дню, он учитывается дважды.Могу ли я подсчитать посетителя в день 2, если он уже был засчитан в день 1?
Пожалуйста, помогите!