[英]Combine multiple rows into one in mysql
我有一个这样的表,我需要使用 sum 将它们全部组合成一个distinct
行。
+-------+-----+------+------+------+-------+
| 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 |
+-------+-----+------+------+------+-------+
像这样的东西。 是否可以? 我尝试了group by
并没有得到这个结果。
+-------+-----+-----+-----+-----+-------+
| 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 |
+-------+-----+-----+-----+-----+-------+
这是您应该如何使用group by
进行聚合:
select users, ref,
count(`add`) `add`,
count(sub) sub,
count(mul) mul,
sum(marks) total
from tablename
group by users, ref
请参阅演示。
结果:
| users | ref | add | sub | mul | total |
| ----- | --- | --- | --- | --- | ----- |
| u1 | 20 | 3 | 2 | 1 | 270 |
| u2 | 15 | 2 | 1 | 0 | 70 |
| u3 | 20 | 1 | 3 | 1 | 145 |
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.