I found this question which is very similar but I'm still having some troubles.
So I start with table named Scores
id | player | time | scoreA | scoreB |
~~~|~~~~~~~~|~~~~~~|~~~~~~~~|~~~~~~~~|
 1 | John   |  10  |   70   |   80   |
 2 | Bob    |  22  |   75   |   85   |
 3 | John   |  52  |   55   |   75   |
 4 | Ted    |  39  |   60   |   90   |
 5 | John   |  35  |   90   |   90   |
 6 | Bob    |  27  |   65   |   85   |
 7 | John   |  33  |   60   |   80   |
I would like to select the best average score for each player along with the information from that record. To clarify, best average score would be the highest value for (scoreA + scoreB)/2.
The results would look like this
id | player | time | scoreA | scoreB | avg_score |
~~~|~~~~~~~~|~~~~~~|~~~~~~~~|~~~~~~~~|~~~~~~~~~~~|
 5 | John   |  35  |   90   |   90   |    90     |
 2 | Bob    |  22  |   75   |   85   |    80     |
 4 | Ted    |  39  |   60   |   90   |    75     |
Based on the question I linked to above, I tried a query like this,
SELECT
   s.*,
   avg_score
FROM
   Scores AS s 
INNER JOIN (
   SELECT
      MAX((scoreA + scoreB)/2) AS avg_score,
      player,
      id
   FROM
      Scores
   GROUP BY
      player
) AS avg_s ON s.id = avg_s.id
ORDER BY
   avg_score DESC,
   s.time ASC
What this actually gives me is,
id | player | time | scoreA | scoreB | avg_score |
~~~|~~~~~~~~|~~~~~~|~~~~~~~~|~~~~~~~~|~~~~~~~~~~~|
 1 | John   |  10  |   70   |   80   |    90     |
 2 | Bob    |  22  |   75   |   85   |    80     |
 4 | Ted    |  39  |   60   |   90   |    75     |
As you can see, it has gotten the correct max avg_score, from record 5, but gets the rest of the information from another record, record 1. What am I missing? How do I ensure that the data all comes from the same record? I'm getting the correct avg_score but I want the rest of the data associated with that record, record 5 in this case.
Thanks in advance!
 
     
     
    