Методы о том, как извлечь различные значения последнего прикосновения на ежедневной основе - PullRequest
0 голосов
/ 06 сентября 2018

Краткий обзор; представьте себе сценарий, в котором только 1 идентификатор (давайте назовем его 123) должен вызывать только 1 событие (давайте назовем его AAA), но из-за характера приложения идентификатор 123 вызвал событие AAA один раз в 5 дней, реально 1 идентификатор должен только иметь 1 триггер события (есть разные сценарии, почему этого не происходит). В общем, вся идея здесь в том, чтобы получить то, что мы называем последним касанием, то есть сказать, что за 5 дней, когда событие AAA запускается с идентификатором 123 (изо дня в день), подтвержденный триггер этого должен быть только в день 5, и я хотел бы исключить счет ID 123 в день 1,2,3 и 4.

Чтобы лучше представить вещи;

Пример данных

Date        ID      Event
=========================
01-09-2018  123     AAA
01-09-2018  456     AAA
02-09-2018  123     AAA
03-09-2018  123     AAA
04-09-2018  123     AAA
05-09-2018  123     AAA

Токовый выход

Date        Count
=================
01-09-2018   2
02-09-2018   1
03-09-2018   1
04-09-2018   1
05-09-2018   1

Желаемый вывод

Date         Count
==================
01-09-2018   1
02-09-2018   0
03-09-2018   0
04-09-2018   0
05-09-2018   1

Мой запрос:

SELECT
  date,
  COUNT(DISTINCT id)
FROM
  [data]
WHERE
  event = 'AAA'
  AND date >= DATE_SUB(NOW(),INTERVAL 5 DAY)
GROUP BY
  date

Очень простой запрос, как и в настоящее время, я делаю то, что я извлекаю данные, используя вышеуказанный запрос, и я также извлекаю всю базу данных и вручную обрабатываю ее, используя консистентную смазку в Excel. Если бы я мог построить запрос, который достигает желаемого результата, был бы очень благодарен. (Облегчает боль, когда я автоматизирую их с помощью Supemetrics на ежедневной основе). Был бы признателен за идеи о том, как этого добиться (ссылки на учебники / методы, указатель, что угодно). Большое спасибо!

1 Ответ

0 голосов
/ 06 сентября 2018

Пожалуйста, запустите этот запрос. Чтобы проверить больше, нам нужно больше определения схемы и данных.

SELECT
  date,
  COUNT(DISTINCT id)
FROM
  [data]
INNER JOIN 
(
SELECT
  event AS event1,
  MAX(date) date1,
FROM [data]
WHERE date >= DATE_SUB(NOW(),INTERVAL 5 DAY)
GROUP BY event  
)T
    ON [data].event= T.event1   
    AND [data].date= T.date1
WHERE
  event = 'AAA'
  AND date >= DATE_SUB(NOW(),INTERVAL 5 DAY)
GROUP BY
  date
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...