Answer
Strip the List Element's data source columns down to just the grouping column and the aggregate calculation, rather than including detail-level columns alongside a grouped aggregate — specifically, Group By the site/contract column, include that grouping column itself as one output column, and add a second column built as an aggregate expression over the whole group, for example 100 * SUM(CASE WHEN <condition> THEN 1 ELSE 0 END) / COUNT(*) to get a percentage of qualifying records within that site. Removing all the extra per-part detail columns is what collapses the result down to one summarized row per site instead of one row per part.