Bạn cần một số nhận dạng hàng riêng biệt trong bảng đầu tiên - có lẽ đó là trong số các cột khác. Nó có thể là một hoặc nhiều cột. Sau đó, bạn có thể sử dụng count(distinct)
:
select tree_id,
count(distinct <unique row column>) filter (where count_if_true)
from t
group by tree_id;