- ベストアンサー
ソート方法が分からない
アクセスログをユーザーエージェント別に集計し、 その際に、ある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"); ご教授よろしくお願い致します。
- みんなの回答 (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句使えたかなあ。使えなかったらごめんなさい。
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
count(*)のような式には別名をつける。 条件はwhereではじく。 SELECT `user_agent`, COUNT(*) as c FROM `access_log` WHERE `ip`!='210.153.84.1' GROUP BY `user_agent` ORDER BY c;
お礼
今回、 アクセス数が0件でも、ユーザーエージェント名は全種類取得したかったので、この方法では上手く行きませんでした。 説明が足りず、申し訳ありませんでした。 yambejp様、ありがとうございました!
- ikiss
- ベストアンサー率43% (34/79)
SELECT `user_agent`, COUNT(*) FROM `access_log` GROUP BY `user_agent` having `ip`<>"210.153.84.1" ORDER BY COUNT(*) だと思いますが?
お礼
having句でクエリエラーが発生してしまいした。 参考にさせて頂きました、 ikiss様、ありがとうございました!
お礼
CASE句、使用できました。 参考にさせて頂いき、希望通りの結果を出すことができました。 nora1962様、ありがとうございました!