dポイントプレゼントキャンペーン実施中!

アクセスログをユーザーエージェント別に集計し、
その際に、あるIPアドレスだけを除いたアクセス数でソートしたいのですが、方法がわかりません。(1レコード1アクセスです)

下記の様に、やってみたのですが、やはり「COUNT(`ip`="210.153.84.1")」の部分が上手く行きません。
SELECT `user_agent`, COUNT(*)
FROM `access_log`
GROUP BY `user_agent`
ORDER BY COUNT(*) - COUNT(`ip`="210.153.84.1");

ご教授よろしくお願い致します。

A 回答 (3件)

SELECT user_agent,


COUNT(*)
FROM access_log
GROUP BY user_agent
ORDER BY count(*)-
sum(case when ip = '210.153.84.1'
then 1
else 0 end )

MysqlってCASE句使えたかなあ。使えなかったらごめんなさい。
    • good
    • 0
この回答へのお礼

CASE句、使用できました。

参考にさせて頂いき、希望通りの結果を出すことができました。
nora1962様、ありがとうございました!

お礼日時:2008/09/16 16:06

count(*)のような式には別名をつける。


条件はwhereではじく。

SELECT `user_agent`, COUNT(*) as c
FROM `access_log`
WHERE `ip`!='210.153.84.1'
GROUP BY `user_agent`
ORDER BY c;
    • good
    • 0
この回答へのお礼

今回、
アクセス数が0件でも、ユーザーエージェント名は全種類取得したかったので、この方法では上手く行きませんでした。

説明が足りず、申し訳ありませんでした。
yambejp様、ありがとうございました!

お礼日時:2008/09/16 15:56

SELECT `user_agent`, COUNT(*)


FROM `access_log`
GROUP BY `user_agent`
having `ip`<>"210.153.84.1"
ORDER BY COUNT(*)

だと思いますが?
    • good
    • 0
この回答へのお礼

having句でクエリエラーが発生してしまいした。

参考にさせて頂きました、
ikiss様、ありがとうございました!

お礼日時:2008/09/16 15:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!