簡體   English   中英

在mysql中將多行合並為一

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM