Mysql
 sql >> Database >  >> RDS >> Mysql

Mysql raggruppa per due colonne e scegli il valore massimo della terza colonna

La tua domanda va bene. Il motivo per cui ottieni 2000 righe è perché ottieni una riga per ogni coppia univoca di valori user_id , item_id .

Se vuoi vedere i tipi di interazione che entrano in ogni riga, usa:

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;

Mi viene in mente che vuoi tutte le righe con il tipo di interazione massimo. In tal caso, calcola il massimo e trova tutte le righe che corrispondono a quel valore:

select t.*
from mytable t cross join
     (select max(interaction_type) as maxit from mytable) x
     on x.maxit = t.interaction_type;

Nessun group by è necessario per questa query.