Извне будет прилетать только id категории, которая нужна, а SQL должен определить к какой категории относится контакт.. Посмотрел db fiddle, спасибо. Это почти то, что нужно. Если хотите, можете продублировать сообщение в ответ, я помечу как решение.
SELECT *, MAX(total_points) as MAX FROM `category_contact` WHERE category_id = 2 && total_points <> 0 GROUP BY contact_id;
По поводу нулей в таблице: это тестовые данные, но даже для боевой базы это норма) с нулей индексируются контакты и категории в CRM