[英]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.