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

Mysql grupper efter to kolonner og vælg den maksimale værdi af tredje kolonne

Din forespørgsel er fin. Grunden til at du får 2000 rækker er fordi du får én række for hvert unikt værdipar user_id , item_id .

Hvis du vil se de interaktionstyper, der går ind i hver række, skal du bruge:

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 går op for mig, at du vil have alle rækker med den maksimale interaktionstype. Hvis ja, beregn maksimum og find derefter alle rækker, der matcher denne værdi:

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 er nødvendig for denne forespørgsel.




  1. En introduktion til tidsseriedatabaser

  2. Sådan arbejder du med værktøjer på skærmen i Access 2019

  3. Beregning af værdi ved hjælp af forrige værdi af en række i T-SQL

  4. Hvordan forbinder man MySQL med Java?