Ich habe folgende Tabelle:
id | Code | Betrag | Menge |
---|---|---|---|
1 | 1 | 25 | 36 |
2 | 2 | 30 | 6 |
3 | 5 | 100 | 1 |
4 | 1 | 25 | 100 |
5 | 1 | 20 | 1 |
6 | 4 | 10 | 136 |
7 | 1 | 10 | 20 |
Ich möchte die Summe aller Beträge ermitteln, für die der Code = 1 ist, und benötige außerdem durch Kommas getrennte Werte aller Mengen und durch Kommas getrennte Werte aller IDs für alle derartigen Ereignisse.
Zum Beispiel: Die Ausgabe sollte so aussehen:
Code | Betrag | Menge | id |
---|---|---|---|
1 | 80 | 36, 100,1, 20 | 1,4,5,7 |
Ich weiß, dass ich etwas Ähnliches tun kann
SELECT code ,SUM(amount) FROM table1 where code = 1 group by code;
, um die diesem Code entsprechende Summe zu erhalten, weiß aber nicht, wie ich alle diese Mengen und IDs erhalten kann.
DBFiddle
在 MySQL 中,您可以使用
GROUP_CONCAT
查询#1
在 DB Fiddle 上查看
在 Postgres 中,您可以使用
string_agg
查询#1
在 DB Fiddle 上查看
您可以简单地使用
GROUP_CONCAT
对所有数据进行分组:GROUP_CONCAT
默认使用逗号 (,) 作为分隔符,因此您可以编写相同的查询:如果您想要一些其他分隔符,您也可以专门定义它。