Twoje zapytanie jest w porządku. Powodem, dla którego otrzymujesz 2000 wierszy, jest to, że otrzymujesz jeden wiersz dla każdej unikalnej pary wartości user_id
, item_id
.
Jeśli chcesz zobaczyć typy interakcji w każdym wierszu, użyj:
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;
Przyszło mi do głowy, że chcesz wszystkie wiersze z maksymalnym typem interakcji. Jeśli tak, oblicz maksimum, a następnie znajdź wszystkie wiersze, które pasują do tej wartości:
select t.*
from mytable t cross join
(select max(interaction_type) as maxit from mytable) x
on x.maxit = t.interaction_type;
Brak group by
jest potrzebne dla tego zapytania.