1

このテーブルがあるとします:

+----+------+---------------------+-------------------------+
| id | user | timestamp           | referrer                |
+----+------+---------------------+-------------------------+
| 1  | foo  | 2012-08-26 14:05:55 | http://fubar.com/online |
+----+------+---------------------+-------------------------+
| 2  | foo  | 2012-08-26 14:05:59 | http://fubar.com/chat   |
+----+------+---------------------+-------------------------+
| 3  | bar  | 2012-08-27 07:06:07 | http://fubar.com/chat   |
+----+------+---------------------+-------------------------+
| 4  | max  | 2012-08-28 14:08:12 | http://fubar.com/chat   |
+----+------+---------------------+-------------------------+
| 5  | max  | 2012-08-28 14:08:36 | http://fubar.com/online |
+----+------+---------------------+-------------------------+

リファラーが複数あり、タイムスタンプが分単位の精度まで同じユーザーをすべて選択したい

これは、1 分間に同じサイトの 2 つのページを閲覧していたことを意味し、マルチタブを使用していることを示唆している可能性があります。したがって、上記の表では、foo と max が基準に適合します。

mysqlでこれを達成する方法を知りたいです。

ありがとうございました。

4

2 に答える 2

1

自己結合を作成TIMESTAMPDIFF()し、結合基準で使用します。

SELECT DISTINCT a.user
FROM   my_table a JOIN my_table b ON
       a.user     =  b.user
   AND a.id       <  b.id
   AND a.referrer <> b.referrer
   AND ABS(TIMESTAMPDIFF(SECOND, a.timestamp, b.timestamp)) <= 60

sqlfiddleで参照してください。

于 2012-08-29T03:27:37.040 に答える
0

「having」節のあるものはどうですか?

SELECT user, COUNT(user) AS tabCount FROM whatever
 GROUP BY user
HAVING tabCount > 1;
于 2012-08-29T03:19:46.840 に答える