Sua consulta está bem. O motivo pelo qual você está obtendo 2.000 linhas é porque está obtendo uma linha para cada par exclusivo de valores
user_id
, item_id
. Se você quiser ver os tipos de interação em cada linha, use:
select user_id, item_id, max(interaction_type) as max_type,
group_concat(distinct interaction_type) as interaction_types,
count(*) as cnt
from mytable
group by user_id, item_id;
Ocorre-me que você deseja todas as linhas com o tipo de interação máxima. Em caso afirmativo, calcule o máximo e encontre todas as linhas que correspondem a esse valor:
select t.*
from mytable t cross join
(select max(interaction_type) as maxit from mytable) x
on x.maxit = t.interaction_type;
Sem
group by
é necessário para esta consulta.