我想选择值,执行一些计算,假设将两列相乘,然后将其添加到其中一列值相同的位置。例如,如果我有一个如下表:
id prm
1 12
3 14
1 13
2 20
1 17
3 11
我想首先将id和prm相乘,然后在有共同id的地方添加它们,这样就会添加第1行,第3行和第5行,并添加第2行和第6行。然后我希望输出按id的降序排列。最终的出局看起来像:
75 40 42
因为3 * 14 + 3 * 11 = 75,2 * 20 = 40,并且1 * 12 + 1 * 13 + 1 * 17 = 42。 我希望我的问题很明确。 有没有办法在一个sql语句中执行此操作?
答案 0 :(得分:1)
select id, sum(id*prm)
from tablename
group by id order by 2 desc
检查此 - >如果符合您的要求,则http://sqlfiddle.com/#!9/07290/8。
答案 1 :(得分:0)
您可以group by
ID。
select id, sum(id*prm)
from yourtable
group by id
要将结果放在一行,您可以
select
max(case when id = 1 then `total` end) as id1,
max(case when id = 2 then `total` end) as id2,
max(case when id = 3 then `total` end) as id3
from (
select id, sum(id*prm) as `total`
from yourtable
group by id) t