Votre requête est bonne. La raison pour laquelle vous obtenez 2000 lignes est que vous obtenez une ligne pour chaque paire unique de valeurs user_id
, item_id
.
Si vous souhaitez voir les types d'interaction entrant dans chaque ligne, utilisez :
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;
Il me semble que vous voulez toutes les lignes avec le type d'interaction maximale. Si tel est le cas, calculez le maximum, puis recherchez toutes les lignes correspondant à cette valeur :
select t.*
from mytable t cross join
(select max(interaction_type) as maxit from mytable) x
on x.maxit = t.interaction_type;
Pas de group by
est nécessaire pour cette requête.