Vous avez besoin d'un identifiant de ligne distinct dans la première table - peut-être parmi les autres colonnes. Il peut s'agir d'une ou plusieurs colonnes. Ensuite, vous pouvez utiliser count(distinct)
:
select tree_id,
count(distinct <unique row column>) filter (where count_if_true)
from t
group by tree_id;