1

個々の Web サイト訪問のセッション ID、IP アドレス、タイムスタンプ、および関連するすべてのページビューをデータベースに保存しています。より多くのデータが含まれていますが、ここに関連するデータは次のクエリで抽出されます。

SELECT 
Pageviews.id, Visitors.time, Visitors.session, Visitors.ip
FROM Visitors
INNER JOIN Pageviews
    ON Visitors.session=Pageviews.session
ORDER BY Visitors.time ASC

次のような結果になります。

id      time        session                     ip

1048    1371473496  nhie5sh2tiufs2ufupcremc6c2  x88.xxx.xxx.xxx
1050    1371474103  8hfphqvq5ri6muc84oidp7q195  x6x.xxx.xxx.xxx
1062    1371474956  hhgssr4v26pjbilkg8d81olqj7  xxx.x3x.xxx.xxx
1066    1371476339  ic8iqd0a4mpoelni15n4tq3404  x1x.xxx.xxx.xxx
1067    1371476629  ockivrm61upk7ss5ni4n8muv23  x2x.xxx.xxx.xxx
1070    1371477856  5tdj9rrd1qsvafovufnkgh8r26  xxx.xxx.x7x.xxx
1068    1371477856  5tdj9rrd1qsvafovufnkgh8r26  xxx.xxx.xxx.x2x
1069    1371478229  5e82v29nuf2k46ir13i21msps5  xxx.x5x.xxx.x8x

訪問者 (個別の IP)、訪問 (個別のセッション)、およびページビュー (個別のページビュー ID) の合計数を取得するために、次のようにデータベースにクエリを実行します。

SELECT 
 count(distinct(Visitors.ip)) as 'Visitors',
 count(distinct(Visitors.session)) as 'Visits',
 count(Pageviews.id) as 'Pageviews'
FROM Visitors
INNER JOIN Pageviews
 ON Visitors.session=Pageviews.session

以下のようなものが返されます。

Visitors   Visits    Pageviews

211        244       412

ただし、保存されたタイムスタンプを使用して、これらの合計を年、月、日ごとにグループ化したいと考えています。そのデータを取得するために、次のクエリを作成しました。

SELECT 
 DAY(FROM_UNIXTIME(Visitors.time)) as 'Day',
 MONTH(FROM_UNIXTIME(Visitors.time)) as 'Month',
 YEAR(FROM_UNIXTIME(Visitors.time)) as 'Year',
 count(distinct(Visitors.ip)) as 'Visitors',
 count(distinct(Visitors.session)) as 'Visits',
 count(Pageviews.id) as 'Pageviews'
FROM Visitors
INNER JOIN Pageviews
 ON Visitors.session=Pageviews.session
GROUP BY Year, Month, Day
ORDER BY Year, Month, Day DESC

これは、日付、ページビュー、および訪問が正しいという点で、かなりうまく機能します。

Day Month   Year    Visitors    Visits  Pageviews

20  6       2013    40          43      59
19  6       2013    80          90      112
18  6       2013    62          66      173
17  6       2013    43          45      68

ご覧のとおり、ここでのページビューの合計は 412 を超えており、訪問数は 244 を超えています。代わりに 225 に変更しました。なぜこれが訪問者数だけに起こっているのかわかりません。

長い質問で申し訳ありません。どんなアイデアでも大歓迎です。

4

1 に答える 1