Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Mysql agrupar por duas colunas e escolher o valor máximo da terceira coluna


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.