MySQLについての質問です。

ページにアクセスした人のホストを、ひたすらレコードとして突っ込んだ状態で「どのプロバイダからのアクセスが一番多いか」を多い順でリストとして表示したいです。
プログラムを書くのもめんどくさいので、できればSQLコマンドだけでやりたいのですが、方法がわかりません。
REGEXPを使えばできそうな気もしないでもないのですが、どうも自分では無理でした。
何かお手軽な方法があれば教えて下さい。

回答の条件
  • 1人2回まで
  • 登録:2007/07/14 06:28:27
  • 終了:2007/07/21 06:30:04

回答(1件)

id:kn1967 No.1

kn1967回答回数2915ベストアンサー獲得回数3012007/07/14 08:55:10

ポイント60pt

あまり多くても何なので上位50まで

SELECT *
FROM (
   SELECT ホスト,COUNT(ホスト) AS アクセス数
   FROM テーブル
   GROUP BY ホスト
)
ORDER BY アクセス数
LIMIT 0,50;

アクセス回数100以上で上位50位まで

SELECT *
FROM (
   SELECT ホスト,COUNT(ホスト) AS アクセス数
   FROM テーブル
   GROUP BY ホスト
   HAVING COUNT(ホスト) >= 100
)
ORDER BY アクセス数
LIMIT 0,50;

説明のためフィールド名等を日本語にしてありますがアルファベットの利用を推奨します。

最後になりましたが動作テストは行っておりませんので適宜テストしてください。

id:studio15

これだとアクセスが多いホスト順だけで、プロバイダごとにまとめられていないですね…

bbtec.net 20000

ocn.ne.jp 1000

と言うような感じで欲しいのです。

2007/07/14 20:26:12
  • id:kn1967
    ログを取るのであれば、後々の集計の事をを考えてアクセスしてきた時点で逆引きしているものとばかり思ってましたが、それは行っていないという事だったのでしょうか?

    だとすれば、集計結果に出てきたアドレスから逆引きを行って逆引き用のテーブルを構築し、集計結果と逆引きテーブルをJOINして集計というような一手間が必要になりますのでMySQLだけでは無理です。

    お使いの処理系(phpかな?)と取得しているログのサンプルを上げてみてはどうでしょう。
    それにあわせた回答が寄せられるものと思います。
    (私が答えられるものであれば答えますけど、他の方からのほうが良き回答が来るかと思いますので、ひとまず間をおきますね)

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません