1

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 人のユニーク ビジターを返します。

4

0 に答える 0