La table de sortie ressemble à ceci, disons: Ce que je voudrais faire est de compter des identifiants uniques de cette façon: p> table : people
+-------+-----------+-------------+-------------+
| id | label | action_A | action_B |
+-------+-----------+-------------+-------------+
| 1 | aaaaa | 1 | 1 |
| 2 | aaaaa | 0 | 1 |
+-------+-----------+-------------+-------------+
3 Réponses :
Utilisez simplement l'agrégation conditionnelle:
select id, label, sum(case when label = 'A' then 1 else 0 end) as a, sum(case when label = 'B' then 1 else 0 end) as b from t group by id, label;
Vous pouvez faire une agrégation conditionnelle: ou vous pouvez simplement utiliser max () code>: p>
Utilisez simplement l'agrégation conditionnelle:
SELECT id, label, coalesce(max(1) filter (WHERE action = 'A'), 0) action_a, coalesce(max(1) filter (WHERE action = 'B'), 0) action_b FROM ... GROUP BY 1, 2
Êtes-vous sûr de vouloir seulement un décompte pour Action_B dans le résultat, même s'il existe deux occurrences?
Oui @manfredmoser :)