这有点难以解释,所以我会一步一步地做。下面是我创建的表。
id | item_1 | item_2 | item_3|
32 | 1 | 43 | 54 |
32 | 54 | 32 | 32 |
67 | 42 | 45 | 12 |
如您所见,前两行具有相同的 id,我的目标是,得到第一行的总和为 (1+43+54),第二行的总和为 (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;