Facebook アプリケーション用の統計データベースがあります。出力の 1 つは、時間範囲に基づくユニークな Facebook ユーザーです。お客様が毎日の使用を選択した場合、1 時間あたりのユニークな Facebook ユーザーのグラフが表示されます。
私の問題は、固有の値にあります。まず、表の関連する列を次に示します。
timestamp---facebookID---actionID---producerID
私の現在のクエリは次のとおりです。
SELECT HOUR(timestamp) as Hour, COUNT(DISTINCT facebookID) as Events
FROM `e4s_analytic_data`
WHERE actionID = 'ax' AND producerID = '2' AND timestamp BETWEEN'12-06-11 0:00:00' and '12-06-11 23:59:59'
GROUP BY HOUR(timestamp)
facebookID
これにより、 1 時間あたりのユニーク ユーザー (に基づく) が得られます。しかしid = 123
、14 で訪問され、17 で再び訪問された場合、彼は 2 回カウントされます - 最初は 14 で、次に 17 で。
これを解決するために、以前の時間からテーブルに既にあるすべての ID を提供する内部クエリを追加しようとしました。
テーブルに既にリストされているすべての facebookIDs を 0 (日の始まり) から現在の時間 (outside の各行から取得) まで取得し、outsideSELECT
から削除することを考えましたSELECT
。そのため、everyCOUNT
には新しい Facebook ID のみが含まれます。これが私が試したことです:
SELECT HOUR(timestamp) as Hour, COUNT(DISTINCT facebookID) as Events
FROM `e4s_analytic_data`
WHERE actionID = 'ax' AND producerID = '2' AND timestamp between '12-06-11 0:00:00' and '12-06-11 23:59:59'
AND facebookID NOT IN
( SELECT facebookID FROM `e4s_analytic_data`
WHERE actionID = 'ax' AND producerID = '2' AND
HOUR(timestamp) >= 0 AND HOUR(timestamp) < Hour
)
GROUP BY HOUR(timestamp)
しかし、それは私にこのエラーを与えます:
Unknown column 'Hour' in 'where clause'
どうすればこれを解決できますか? ありがとう。
編集: サンプル データ:
timestamp--------------facebookID--------producerID-------actionID
2012-06-13 12:38:55 ******6513406 2 ax
2012-06-13 08:49:55 ******6513406 2 ax
このクエリは、8 時に 1 人のユニーク ビジターを返し、12 時に 1 人のユニーク ビジターを返します。