在mysql中将多行合并为一行
我有一个这样的表,我需要使用sum将它们组合成一个在mysql中将多行合并为一行,mysql,select,group-by,Mysql,Select,Group By,我有一个这样的表,我需要使用sum将它们组合成一个不同的行 +-------+-----+------+------+------+-------+ | users | ref | add | sub | mul | marks | +-------+-----+------+------+------+-------+ | u1 | 20 | 4521 | | | 20 | | u1 | 20 | 4522 | | |
不同的行
+-------+-----+------+------+------+-------+
| users | ref | add | sub | mul | marks |
+-------+-----+------+------+------+-------+
| u1 | 20 | 4521 | | | 20 |
| u1 | 20 | 4522 | | | 80 |
| u1 | 20 | 4523 | | | 60 |
| u1 | 20 | | 8565 | | 70 |
| u1 | 20 | | 8566 | | 30 |
| u1 | 20 | | | 5135 | 10 |
| u2 | 15 | 4521 | | | 20 |
| u2 | 15 | 4522 | | | 20 |
| u2 | 15 | | 6253 | | 30 |
| u3 | 20 | 5236 | | | 40 |
| u3 | 20 | | 4523 | | 50 |
| u3 | 20 | | 4524 | | 5 |
| u3 | 20 | | 4525 | | 30 |
| u3 | 20 | | | 5135 | 20 |
+-------+-----+------+------+------+-------+
像这样的。可能吗?我尝试了分组,但没有得到这个结果
+-------+-----+-----+-----+-----+-------+
| users | ref | add | sub | mul | total |
+-------+-----+-----+-----+-----+-------+
| u1 | 20 | 3 | 2 | 1 | 270 |
| u2 | 15 | 2 | 1 | n/a | 70 |
| u3 | 20 | 1 | 3 | 1 | 145 |
+-------+-----+-----+-----+-----+-------+
这是您应该如何使用分组依据
来聚合:
select users, ref,
count(`add`) `add`,
count(sub) sub,
count(mul) mul,
sum(marks) total
from tablename
group by users, ref
请参阅。
结果:
让我们看看你的尝试,它应该有一个不是计数而是总和的workedIs
| users | ref | add | sub | mul | total |
| ----- | --- | --- | --- | --- | ----- |
| u1 | 20 | 3 | 2 | 1 | 270 |
| u2 | 15 | 2 | 1 | 0 | 70 |
| u3 | 20 | 1 | 3 | 1 | 145 |