これを説明するのはちょっと難しいので、順を追って説明します。以下は私が作成した表です。
id | item_1 | item_2 | item_3|
32 | 1 | 43 | 54 |
32 | 54 | 32 | 32 |
67 | 42 | 45 | 12 |
ご覧のとおり、最初の 2 行の ID は同じです。私の目標は、最初の行の合計 (1+43+54) と 2 番目の行の合計 (54+32+32) を取得することです。 、次に同じ ID を持つ両方の行を追加し、それらを最高から最低の順に並べ替えます。私は以下のコードでこれを行うことができました。position
しかし、下の表のような行を取得したい場合はどうでしょうか。私は基本的にいくつかのランク付けシステムを行っています。最初に item_sum で並べ替えてから、行の位置を取得します。どうすれば達成できますか?
position | id | item_sum |
1 | 32 | 218 |
2 | 67 | 99 |
select
id,
sum(item_1+item_2+item_3) as item_sum
from yourtable
group by id
order by item_sum desc;
以下のコードを試してみましたが、「item_sum」で順序を設定したため、位置番号が正しくありません
SET @position=0;
SELECT @position:= @position+1 AS position,
id,
sum(item_1+item_2+item_3) as item_sum
from yourtable
group by id
order by item_sum desc;