sql >> Databasteknik >  >> RDS >> Mysql

Mysql gruppera i två kolumner och välj det högsta värdet för tredje kolumnen

Din fråga är bra. Anledningen till att du får 2000 rader är att du får en rad för varje unikt värdepar user_id , item_id .

Om du vill se interaktionstyperna för varje rad, använd:

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;

Det slår mig att du vill ha alla rader med den maximala interaktionstypen. Om så är fallet, beräkna maxvärdet och hitta sedan alla rader som matchar det värdet:

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

Ingen group by behövs för den här frågan.




  1. MySQL SKAPA ANVÄNDARE med en variabel?

  2. Hur importerar jag moduler eller installerar tillägg i PostgreSQL 9.1+?

  3. Hur man använder SQL Server AlwaysOn-funktioner

  4. Där resultatuppsättningen lagras när du arbetar med jdbc och oracle-drivrutinen