快速概述;设想一个场景,其中只有1个ID(让我们将其称为123)应该仅触发1个事件(让我们将其称为AAA),但是由于应用程序的性质,ID 123每5天触发一次事件AAA,实际上1个ID仅应有1个事件触发器(有多种情况导致这种情况不会发生的原因)。几乎可以说,这里的整个想法是获得我们所谓的最后一次触摸,这意味着在事件AAA由ID 123触发的5天(每天)中,已确认的触发应该仅在当天发生5,我想消除第1,2,3&4天的ID 123的计数。
使事情更清晰;
示例数据
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中的lil弯头润滑脂进行手动处理。如果我可以构建一个查询来实现高于期望的输出,将不胜感激。 (减轻了我每天使用Supemetrics使它们自动化的痛苦)。将不胜感激关于如何实现这一点的想法(链接到教程/方法,指针,任何东西)。非常感谢!
答案 0 :(得分:0)
请运行此查询。要进行更多测试,我们需要更多的架构定义和数据。
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