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

标签 mysql sql sequelpro

我有一个包含这些列的数据集:

  • 日期
  • 代码
  • 链接
  • 点击次数

每个代码代表一个人,我的目标是找到某人发布每个链接的首次日期以及每个链接的点击次数。要被视为合法帖子,链接必须至少获得 100 次点击。这个查询几乎可以满足我的需要:

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 日获得了 1 次链接 A 的点击。 1 月 7 日,链接 A 的总点击次数达到 100+。现在这个查询在 1 月 1 日返回,而我需要它在 1 月 7 日返回。

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

最佳答案

这很棘手。我认为您需要为此使用变量,以便获得点击次数的累计总和(实际上,您也可以使用相关子查询):

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;

关于mysql - 挣扎于最小(日期)解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41886379/

相关文章:

php - 从下拉列表中获取数据在 laravel 中显示错误

php - 如何将 mysql while 循环与 xlsxwriter 类一起使用?

sql - 交换 SQL Server 中同一个表中两行的值

r - 通过RMySQL连接到sequel pro数据库远程服务器

MySQL 表示 : Can't connect to MySQL server on '127.0.0.1' (4)

mysql - Sequel pro 无法再连接

php - 如何从$_SESSION获取作者的id和姓名到数据库?

mysql - django 的原始 SQL 语法有错误

sql - PostgreSQL - 语法错误或附近

mysql - 在这种情况下如何最好地设计数据库