我有一个包含三列 (a,b,c) 的表,我需要通过使用列 a 和 b 的不同特征来创建一个新列“d”。
a b c
1 p 2
1 p 3
2 q 4
1 q 2
2 r 4
2 r 2
1 p 2
我需要如下答案,其中 d 是 a 和 b 的唯一列的总和
a b c d
1 p 2 7
1 p 3 7
2 q 4 4
1 q 2 2
2 r 4 6
2 r 2 6
1 p 2 7
d列的结果是,
对于不同的(a & b), 然后,添加 c 的值。 然后在 d 列中插入值(匹配不同的值)
最佳答案
你可以尝试在子查询中使用 SUM
和 group by
a
和 b
列,然后 self 加入
TestDLL
create table t(
a int,
b varchar(5),
c int
);
insert into t values (1,'p',2);
insert into t values (1,'p',3);
insert into t values (2,'q',4);
insert into t values (1,'q',2);
insert into t values (2,'r',4);
insert into t values (2,'r',2);
insert into t values (1,'p',2);
查询
SELECT t1.*,t2.d
FROM T t1 INNER JOIN (
SELECT a,b,SUM(c) d
FROM T
GROUP BY a,b
) t2 on t1.a = t2.a and t1.b=t2.b
[结果]:
| a | b | c | d |
|---|---|---|---|
| 1 | p | 2 | 7 |
| 1 | p | 3 | 7 |
| 2 | q | 4 | 4 |
| 1 | q | 2 | 2 |
| 2 | r | 4 | 6 |
| 2 | r | 2 | 6 |
| 1 | p | 2 | 7 |
关于mysql - SQL 查询通过使用不同的特征在一列中添加值来插入新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51532864/