如何编辑这个mySQL查询,以便找到访问特定页面超过x次的人?

时间:2016-04-15 13:28:00

标签: php mysql sql

我正在尝试创建一个复杂的(对我来说)MySQL查询来从数据库中获取一些数据。 我想要混合3列以获取数据。

  1. timestamp专栏
  2. url专栏
  3. hash专栏
  4. 我的最终目标是回答这些类型的问题:

    • 过去几天内访问过特定网址的用户的数量和人数,但这些人必须在过去几天内访问该网页 x次

    到目前为止我已经这样做了,但我不知道如何获得每个哈希的总数

        SELECT DISTINCT hash
        FROM behaviour
        WHERE DATE( TIMESTAMP ) BETWEEN
        SUBDATE( CURDATE( ) , 2 ) AND CURDATE( )
        AND url =  '/used-results' 
    

    和' url'发现此哈希值超过2次

    如何编辑查询以添加最后一个条件?

1 个答案:

答案 0 :(得分:1)

如果你想计算页数,你将需要聚合函数,在某个地方。所以:

SELECT hash
FROM behaviour
WHERE DATE( TIMESTAMP ) BETWEEN SUBDATE( CURDATE( ) , 2 ) AND CURDATE( ) AND
      url =  '/used-results'
GROUP BY hash
HAVING COUNT(*) > 2;

通常,像这样的表会非常大,可能会在(url, TimeStamp)上有一个索引。因此,以下版本更好地利用了hte索引:

SELECT hash
FROM behaviour
WHERE url =  '/used-results' AND
      TIMESTAMP >= DATE_SUB(CURDATE( ), INTERVAL 2 DAY ) AND 
      TIMESTAMP < DATE_ADD(CURDATE( ), INTERVAL 1 DAY)          
GROUP BY hash
HAVING COUNT(*) > 2;