質問: アンケート結果を集計するsqlを教えて下さい アンケート結果を集計する効率の良いシンプルなsqlを教えて下さい。 mysqlで、以下の状態です。 テーブル名:hoge カラム:id,kbn id...auto kbn...1~5 欲しい結果は、以下の状態です。 順位,kbn,count 1位,5,60ポイント 2位,3,45ポイント 2位,1,45ポイント 4位,4,30ポイント 5位,2,10ポイント ※位やポイントはプログラム側で付与するので不要です。 2位の様に同点の場合は同じ順位を表示し、3位を飛ばし順位を表示させたく思います。 どうぞ、よろしくお願い致します。
回答: 手っ取り早いのは一度ビューを作ることです。 //準備 create table hoge(id int not null auto_increment primary key,kbn int); insert into hoge(kbn) values(1),(2),(3),(4),(5),(1),(1),(2),(4),(5),(3),(1),(2),(5),(5),(3),(2),(1); //ビューの作成 create view vhoge as select kbn,count(*) as cnt from hoge group by kbn; //集計 select kbn,cnt,(select count(*)+1 from vhoge as v2 where v1.cnt