挣扎于最小(日期)解决方案

时间:2017-01-27 02:55:31

标签: mysql sql sequelpro

我有一个包含以下列的数据集:

  • 日期
  • 链接
  • 点击次数

每个代码代表一个人,我的目标是找到每个链接发布的第一个日期以及每个链接有多少次点击。要被视为合法帖子,链接必须总共至少有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日。

我希望我足够清楚(再次对此非常新)。任何帮助将不胜感激! :)

2 个答案:

答案 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

它使用用户变量按每个用户的日期顺序累计添加点击次数,并过滤掉尚未达到计数的行。