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

Uzyskaj maksymalną wartość i odpowiednią kolumnę

To zapytanie powinno dostarczyć to, czego potrzebujesz:

SELECT
    player_id, game_id, score
FROM
(
    SELECT game_id,MAX(score) AS MaxScore
    FROM games
    GROUP BY game_id
) AS Winners
JOIN games
    ON (games.game_id = Winners.game_id AND games.score = Winners.MaxScore)

Zakłada, że ​​remis jest wygraną obu graczy.

SQLFiddle

Jeśli chcesz uzyskać tylko gracza i jego liczbę wygranych, możesz użyć tego zapytania:

SELECT
    player_id, COUNT(*) AS wins
FROM
(
    SELECT game_id,MAX(score) AS MaxScore
    FROM games
    GROUP BY game_id
) AS Winners
JOIN games
    ON (games.game_id = Winners.game_id AND games.score = Winners.MaxScore)
WHERE player_id = {player_id}
GROUP BY player_id

Po prostu zastąp {player_id} z graczem, którego szukasz i wins to ich liczba wygranych lub remisów.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Duża tabela w mysql Aktualizacja wierszy na podstawie csv za każdym razem

  2. jak zoptymalizować bazę danych geolokalizacji w mysql pod kątem wyszukiwania/zapytania o odległość euklidesową?

  3. MySQL Connector/Python - wstaw zmienną Pythona do tabeli MySQL

  4. Przechowywanie dużego formatu JSON — binarnego lub tekstowego

  5. Python MySQLdb / MySQL INSERT IGNORE &Checking ifignored