sql >> Database >  >> RDS >> Mysql

Mysql groeperen op twee kolommen en kies de maximale waarde van de derde kolom

Je vraag is goed. De reden dat u 2000 rijen krijgt, is omdat u één rij krijgt voor elk uniek paar waarden user_id , item_id .

Als u de interactietypes in elke rij wilt zien, gebruik dan:

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;

Het komt me voor dat je alle rijen wilt met het maximale interactietype. Zo ja, bereken dan het maximum en zoek vervolgens alle rijen die overeenkomen met die waarde:

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

Geen group by is nodig voor deze zoekopdracht.




  1. Op zoek naar hoofdletterongevoelige MySQL-sortering waarbij een !=ä

  2. Hoe vind je alle tabellen met externe sleutels die verwijzen naar bepaalde table.column en die waarden hebben voor die externe sleutels?

  3. Een leeg formulier maken in Access 2016

  4. Stamboom/stamboomkaart uit database