0
votes

Calculer la valeur distincte_1 lorsque valeur_2, valeur_3 est égale à une certaine valeur

La table de sortie ressemble à ceci, disons: xxx pré>

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     |
+-------+-----------+-------------+-------------+


2 commentaires

Ê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 :)


3 Réponses :


1
votes

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;


0 commentaires

1
votes

Vous pouvez faire une agrégation conditionnelle: xxx

ou vous pouvez simplement utiliser max () : xxx


0 commentaires

3
votes

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


0 commentaires