J'ai le tableau suivant :
id | Code | Montant | Quantité |
---|---|---|---|
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 |
Je veux trouver la somme de tous les montants pour lesquels code = 1 et j'ai également besoin de valeurs séparées par des virgules de toutes les quantités et de valeurs séparées par des virgules de tous les identifiants pour tous ces événements.
Par exemple : Le résultat devrait ressembler à ceci :
Code | Montant | Quantité | id |
---|---|---|---|
1 | 80 | 36, 100,1, 20 | 1,4,5,7 |
Je sais que je peux faire quelque chose de similaire
SELECT code ,SUM(amount) FROM table1 where code = 1 group by code;
pour avoir obtenu la somme correspondant à ce code mais je ne sais pas comment obtenir toutes ces quantités et identifiants.
DBFiddle
Dans MySQL, vous pouvez utiliser
GROUP_CONCAT
Requête n°1
Vue sur DB Fiddle
Dans Postgres, vous pouvez utiliser
string_agg
Requête n°1
Vue sur DB Fiddle
Vous pouvez simplement utiliser
GROUP_CONCAT
pour regrouper toutes vos données :GROUP_CONCAT
Par défaut, la virgule (,) est utilisée comme délimiteur afin que vous puissiez écrire la même requête :Si vous souhaitez un autre délimiteur, vous pouvez également le définir spécifiquement.