在mysql中将多行合并为一行

在mysql中将多行合并为一行,mysql,select,group-by,Mysql,Select,Group By,我有一个这样的表,我需要使用sum将它们组合成一个不同的行 +-------+-----+------+------+------+-------+ | users | ref | add | sub | mul | marks | +-------+-----+------+------+------+-------+ | u1 | 20 | 4521 | | | 20 | | u1 | 20 | 4522 | | |

我有一个这样的表,我需要使用sum将它们组合成一个
不同的

+-------+-----+------+------+------+-------+
| 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   |