• ベストアンサー

ソート方法が分からない

アクセスログをユーザーエージェント別に集計し、 その際に、ある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"); ご教授よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.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句使えたかなあ。使えなかったらごめんなさい。

takatokoko
質問者

お礼

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

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

count(*)のような式には別名をつける。 条件はwhereではじく。 SELECT `user_agent`, COUNT(*) as c FROM `access_log` WHERE `ip`!='210.153.84.1' GROUP BY `user_agent` ORDER BY c;

takatokoko
質問者

お礼

今回、 アクセス数が0件でも、ユーザーエージェント名は全種類取得したかったので、この方法では上手く行きませんでした。 説明が足りず、申し訳ありませんでした。 yambejp様、ありがとうございました!

  • ikiss
  • ベストアンサー率43% (34/79)
回答No.1

SELECT `user_agent`, COUNT(*) FROM `access_log` GROUP BY `user_agent` having `ip`<>"210.153.84.1" ORDER BY COUNT(*) だと思いますが?

takatokoko
質問者

お礼

having句でクエリエラーが発生してしまいした。 参考にさせて頂きました、 ikiss様、ありがとうございました!

関連するQ&A