2017-01-24 4 views
2

私は検索テーブルを記録しました。列はIP、query、timestampです。私が望むのは、データを「クエリ」でグループ化し、その「クエリ」のIPアドレスの一意のインスタンスの数を数えることです。ここでは、そのテーブルのサンプルです:mysqlは別の列とグループ結果によって異なる行を数えます

TABLE: SEARCHES 
IP | query |  timestamp 
1.2.3.4 oranges  1485215625 
1.2.3.5 bananas  1485215643 
1.2.3.4 oranges  1485215655 
1.2.3.6 apples   1485215662 
1.2.3.7 oranges  1485215711 
1.2.3.7 pears   1485215730 

私は、次のmysqlのクエリを使用しています:

SELECT query, COUNT(query) as num FROM searches WHERE timestamp > ".$sometimestamp." GROUP BY query 

私の目標は、次のようなデータを取得するために、次のようになります。

oranges [2] 
bananas [1] 
apples [1] 
pears [1] 

私のクエリが近くにありますしかし、それは生産するでしょう:

oranges [3] <-- IP address 1.2.3.4 searched for this twice, counting 3 total 
bananas [1] 
apples [1] 
pears [1] 

IPアドレスごとに一度だけユニークな検索クエリをカウントする方法が必要です(ただし、同じIPアドレスから複数のユニークなクエリは無視されません)。

答えて

1

使用すると、個別のカウント:

SELECT 
    `query`, 
    COUNT(DISTINCT `IP`) as num 
FROM `searches` 
WHERE `timestamp` > ".$sometimestamp." 
GROUP BY `query` 
+0

を、私はそれを試してみましたが、それは私が2 – pghalcrow

+0

あなたは '明確なIP'べき@pghalcrow期待する「みかん」のための唯一の1インスタンスが作成されます。 – Blank

+0

おっと、私はDISTINCTクエリを使用していました。私はこれがあまりにも簡単だったことを知っていた(壁に頭を向けて)。 – pghalcrow

関連する問題