我有一个包含以下列的数据集:
每个代码代表一个人,我的目标是找到每个链接发布的第一个日期以及每个链接有多少次点击。要被视为合法帖子,链接必须总共至少有100次点击。此查询ALMOST执行我需要的操作:
select
min(date) as post_date,
max(date) as last_click,
link,
code,
sum(clicks) as clicks
from table1
where date >= '2017-01-01'
group by link, code
having sum(clicks) > 100
问题是这个查询给了我第一个日期,任何点击都注册了100多次点击的链接。例如:
PersonA在1月1日点击了linkA。 1月7日,linkA总共获得了100多次点击。现在这个查询将在1月1日返回,当时我需要它返回1月7日。
我希望我足够清楚(再次对此非常新)。任何帮助将不胜感激! :)
答案 0 :(得分:0)
这很棘手。我认为你需要为此使用变量,以获得点击次数的累积总和(实际上,你也可以使用相关的子查询):
select min(date) as post_date, max(date) as last_click,
link, code,
max(running_clicks) as clicks
from (select t1.*,
(@c := if(@lc = concat_ws(':', link, code), @c + clicks,
if(@lc := concat_ws(':', link, code), clicks, clicks)
)
) as running_clicks
from table1 t1 cross join
(select @rn := 0, @lc := '') params
where t1.date >= '2017-01-01'
order by link, code
) t
group by link, code
having running_clicks - clicks > 100;
答案 1 :(得分:0)
试试这个:
index.css
它使用用户变量按每个用户的日期顺序累计添加点击次数,并过滤掉尚未达到计数的行。