人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

table1
月,日,ページURL

というアクセスログがあります。

これから「月+日+ページ名」別のカウントを取得するには
どういうSQLにすれば良いでしょうか。
(MySQL4.xです)

下記の様に取得したいと考えています。

月、日、ページ名、カウント
01、01、pageA、123
01、01、pageB、123
01、01、pageC、123
01、02、pageA、123
01、02、pageB、123
01、02、pageC、123

また、一般的にページ毎のアクセス数を記録したい場合は、
どのようなテーブルにするのが一般的か教えてください。
OSやブラウザ、リンク元などの情報は不要です。
年月日毎のページ毎のカウントを知る事ができる様にと考えています。
記録数は数ヶ月100万件程度を考えています。

よろしくお願いします。


●質問者: worldtravel
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:OS SQL URL アクセスログ アクセス数
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● bayan
●60ポイント ベストアンサー

次のようなSQLでどうでしょう。

SELECT month, day, pagename, COUNT(*) AS cnt 
 FROM accesslog
 GROUP BY month, day, pagename;

ここで、

月 month

日 day

ページ名 pagename

カウント cnt

としました。(日本語の列名はあんまり馴染みがないので。。。)


次のようなデータが入っているとします。

mysql> SELECT * FROM accesslog;
+-------+------+----------+
| month | day | pagename |
+-------+------+----------+
| 01 | 01 | pageA |
| 01 | 01 | pageA |
| 01 | 01 | pageB |
| 01 | 01 | pageC |
| 01 | 02 | pageA |
| 01 | 02 | pageB |
| 01 | 02 | pageB |
| 01 | 02 | pageB |
| 01 | 02 | pageB |
| 01 | 02 | pageC |
| 01 | 02 | pageC |
+-------+------+----------+

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

mysql> SELECT month , day, pagename, COUNT(*) AS cnt
 -> FROM accesslog
 -> GROUP BY month , day, pagename;
+-------+------+----------+-----+
| month | day | pagename | cnt |
+-------+------+----------+-----+
| 01 | 01 | pageA | 2 |
| 01 | 01 | pageB | 1 |
| 01 | 01 | pageC | 1 |
| 01 | 02 | pageA | 1 |
| 01 | 02 | pageB | 4 |
| 01 | 02 | pageC | 2 |
+-------+------+----------+-----+
◎質問者からの返答

ありがとうございます。

早速テストしてみます。

終わり次第ご報告致します。

うまく行きました。

ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ