1

IP ごとに一意のビューを取得しようとしています。MySQL クエリを使用して返される 1 日あたり最大 1 回カウントされます。

テーブルは次のようになります。

product_id          time          ip
INT                 TIMESTAMP     VARCHAR

クエリはいつでも一意のビューを返す必要がありますが、製品 ID をフィルタリングして、各製品に独自の一意のビュー フィールドがカウントされるようにする必要があります。テーブル内の IP アドレスは、1 日 1 回 MAX カウントする必要があります。以下のクエリでカウントする必要があるものとカウントしないものをいくつか詳しく説明します。

product_id          DATE(time)          ip            should_be_counted
11                  2012-12-14          1.1.1.1       YES
11                  2012-12-14          1.1.1.2       YES
11                  2012-12-14          1.1.1.1       NO
11                  2012-12-13          1.1.1.1       YES
11                  2012-12-13          1.1.1.1       NO

Should be returned:
product_id          unique_views
11                  3

これは私が欲しいものです:

product_id          unique_views
11                  103
8                   53
2                   3
1                   1

つまり、クエリは ORDER BY unique_views DESC を使用する必要があります。

助けてくれてありがとう!

4

1 に答える 1

5
SELECT Product_ID, SUM(unique_view) unique_views
FROM
(
  SELECT Product_ID, COUNT(DISTINCT IP)  unique_view
  FROM   tableName
  GROUP BY Product_ID, DATE(time)
) x
GROUP BY Product_ID
于 2012-12-11T13:56:19.237 に答える