sql >> Databáze >  >> RDS >> Mysql

Mysql seskupte do dvou sloupců a vyberte maximální hodnotu třetího sloupce

Váš dotaz je v pořádku. Důvod, proč získáváte 2000 řádků, je ten, že získáváte jeden řádek pro každý jedinečný pár hodnot user_id , item_id .

Chcete-li vidět typy interakcí, které jsou součástí každého řádku, použijte:

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;

Přijde mi, že chcete všechny řádky s typem maximální interakce. Pokud ano, vypočítejte maximum a poté najděte všechny řádky, které odpovídají této hodnotě:

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

Žádné group by je pro tento dotaz potřeba.




  1. Jak nainstalovat MySQL 5.7 na Amazon ec2

  2. mysqldump přes SSH do místního počítače

  3. Jednoduchý případ použití pro indexy na primárních klíčích

  4. Jak získat počet, i když neexistují žádné výsledky odpovídající mysql?