Mysql
 sql >> база данни >  >> RDS >> Mysql

Mysql групирайте по две колони и изберете максималната стойност на третата колона

Вашето запитване е добре. Причината да получавате 2000 реда е, че получавате един ред за всяка уникална двойка стойности user_id , item_id .

Ако искате да видите типовете взаимодействия, влизащи във всеки ред, използвайте:

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;

Хрумва ми, че искате всички редове с максимален тип взаимодействие. Ако е така, изчислете максимума и след това намерете всички редове, които отговарят на тази стойност:

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

Няма group by е необходимо за тази заявка.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. utf-8 срещу latin1

  2. Безопасни ли са тригерите на базата данни за ограничения на целостта на кръстосани таблици?

  3. Тригер в mysql причинява грешка

  4. MySQL или PHP добавя Â всеки път, когато се използва £

  5. MySQL сървърът е изчезнал по време на обхождане в Perl