Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Mysql pogrupuj według dwóch kolumn i wybierz maksymalną wartość z trzeciej kolumny

Twoje zapytanie jest w porządku. Powodem, dla którego otrzymujesz 2000 wierszy, jest to, że otrzymujesz jeden wiersz dla każdej unikalnej pary wartości user_id , item_id .

Jeśli chcesz zobaczyć typy interakcji w każdym wierszu, użyj:

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;

Przyszło mi do głowy, że chcesz wszystkie wiersze z maksymalnym typem interakcji. Jeśli tak, oblicz maksimum, a następnie znajdź wszystkie wiersze, które pasują do tej wartości:

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

Brak group by jest potrzebne dla tego zapytania.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak tworzyć i utrzymywać bazy danych MySQL w cPanel?

  2. Jak pobrać plik za pomocą PHP i Mysql DB?

  3. Zapytanie MySQL z wieloma tabelami

  4. Importowanie GeoLite2 z MaxMind do MySQL

  5. Klucze podstawowe MySQL:UUID / GUID vs BIGINT (znacznik czasu+losowy)