Você precisa de um identificador de linha distinto na primeira tabela - talvez esteja entre as outras colunas. Pode ser uma ou mais colunas. Então você pode usar
count(distinct)
:select tree_id,
count(distinct <unique row column>) filter (where count_if_true)
from t
group by tree_id;