質問: mysqlでグループ内の最大値を取得する方法 はじめまして。 voteというテーブルにcategory_id、individual_id、timeという3つのフィールドがあります。 (1)category_idは名前の通りカテゴリーのidで、0~100まであります。 (2)individual_idはcategory_idごとに0~100まであます。 (3)timeは行が挿入された時間が記入されています。投票されるたびに行が挿入されます。 (4)category_idとindividual_idとdateでユニークキーを構成しています。 (5)category_idとindividual_idの2つで、個人が特定されます。 select categry_id, individual_id, count(*) from vote group by category_id, individual_id という命令文で、誰に何票voteされているかが分かります。 この先ですが、各カテゴリの中で最も多く投票されている3人ずつを表示したいのですが、どのようなsqlを書けばよいでしょうか。 似たような質問もあり、自分なりに四苦八苦して試してみたのですがうまくいきませんでした。 回答いただけると助かります。よろしくお願いいたします。
回答: >最も多く投票されている3人ずつ 定義があいまい、上位3名という場合、同位のものがいた場合どうするのですか? たとえば1位が10人いたら4人目以降をどうやって除外するつもりでしょう? 新しいtimeを持つ順、古いtimeを持つ順、individual_idの昇順・降順など どれかかなぁとは思いますが・・・ あと、timeとかdateとか語句にぶれがあります。 実質datetimeのフィールドだとおもいますが、予約語をフィールド名に使うのは 混乱の元なので注意が必要です