Necesita un identificador de fila distinto en la primera tabla; tal vez esté entre las otras columnas. Puede ser una o más columnas. Entonces puedes usar count(distinct)
:
select tree_id,
count(distinct <unique row column>) filter (where count_if_true)
from t
group by tree_id;