0

私の質問は、列「avg_score」に基づいて上位 3 つのエントリにラベルを付ける方法を見つけることです。残りのエントリは表示されますが、ラベルはありません。次のようなテーブルがあるとします。

 Entry   avg_score

entry_1 | 4.3
entry_2 | 9.4
entry_3 | 4.6
entry_4 | 7.1
entry_5 | 2.1
entry_6 | 1.9

列「avg_score」に基づいて上位 3 つを見つけて、次のように表示できるようにしたいと考えています。

「1位:entry_2

2位:entry_4

3位:entry_3

エントリ_1

エントリー_5

entry_6"

どんな助けでも大歓迎です!

4

2 に答える 2

1

これを行う標準的な方法は、ランクを定義し、そのランクを使用してエントリ名の先頭に追加する文字列を決定することです。

select concat(case when rank = 1 then '1st place: '
                   when rank = 2 then '2nd place: '
                   when rank = 3 then '3rd place: '
                   else ''
              end, entry)
from (select t.*, @rank := @rank + 1 as rank
      from t cross join (select @rank := 0) const
      order by avg_score desc
     ) t
于 2013-06-10T18:22:46.117 に答える