• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MySQLでのランキングの生成方法に関してなのですが、)

MySQLでのランキングの生成方法について

このQ&Aのポイント
  • MySQLでのランキングの生成方法について調べています。具体的には、id別にflgが1のデータの数でランキングをする方法を知りたいです。同率の場合は同じ順位とします。
  • MySQL5.0.51を使用している状況で、ランキングを生成する方法を探しています。
  • テストテーブルにはidとflgの列があり、毎日のミニテストの結果によってflgが1になるデータがあります。そのデータを使用してランキングを作成したいです。

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

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

あ・・・前回のはぱっと思い付きだったのでかなりダメダメですね (一部文法を間違えたSQになっていました) ちょっと精査しましたが、フローはだいたい同じですがこんな感じで select ( select count(*) +1 from ( select id,count(*) as countb from testテーブル where flg=1 group by id ) AS t2 where countb > sum(t1.flg=1) ) as rank ,t1.id,sum(t1.flg=1) as counta from testテーブル AS t1 group by id order by rank asc,id asc

その他の回答 (1)

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

とりあえず動けばいいならこんな感じで? select ( select count(*) +1 from ( select id,count(*) as countb from testテーブル where flg=1 group by id ) AS t2 where countb > counta ) as rank ,t1.id,t1.counta FROM ( select id,sum(flg=1) as counta from testテーブル group by id ) AS t1 group by id order by rank asc,id asc

takeya4649
質問者

お礼

ありがとうございました。 問題なく動作しました。