Если принять такую формулировку:
Первичным является товар, одновременно с которым куплено больше всего других товаров
то запрос на получение "первичных" товаров будет такой:
WITH cte AS (
SELECT t1.cat_id, RANK() OVER (ORDER BY COUNT(t2.cat_id) DESC) rnk
FROM user_to_cat t1
JOIN user_to_cat t2 ON t1.user_id = t2.user_id
AND t1.cat_id <> t2.cat_id
GROUP BY 1
)
SELECT category.code
FROM cte
JOIN category ON category.id = cte.cat_id
WHERE rnk = 1
На данных из fiddle запрос даст 2 товара - orange и pear, оба они участвуют в 6 парах, тогда как apple участвуют в 4, а lemon в 2 парах.