- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MySQLでのランキングの生成方法に関してなのですが、)
MySQLでのランキングの生成方法について
このQ&Aのポイント
- MySQLでのランキングの生成方法について調べています。具体的には、id別にflgが1のデータの数でランキングをする方法を知りたいです。同率の場合は同じ順位とします。
- MySQL5.0.51を使用している状況で、ランキングを生成する方法を探しています。
- テストテーブルにはidとflgの列があり、毎日のミニテストの結果によってflgが1になるデータがあります。そのデータを使用してランキングを作成したいです。
- みんなの回答 (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
お礼
ありがとうございました。 問題なく動作しました。