Средние показатели карьеры для игроков, которые играли в текущем сезоне - PullRequest
0 голосов
/ 05 мая 2018

Я пытаюсь перечислить средние показатели игроков по их карьере, но только с учетом тех игроков, которые сыграли хотя бы одну игру в 2018 году, но мой запрос просто возвращает игроков, которые сыграли «только» в 2018 году, а не средние показатели за все игроки, сыгравшие хотя бы одну игру в 2018 году.

SELECT PlayerID
     , Surname
     , AKA
     , COUNT(*) AS Played
     , ROUND(AVG(Kicks),1) AS K
     , ROUND(AVG(Handballs),1) AS HB
     , ROUND(AVG(Marks),1) AS M
     , Season
  FROM `PlayerDetails` 
 WHERE Team = 'Team A'
 GROUP 
    BY PlayerID 
HAVING Season = 2018
 ORDER 
    BY Surname ASC 

1 Ответ

0 голосов
/ 05 мая 2018

Вам необходимо удалить свое предложение HAVING и добавить к своему предложению WHERE:

SELECT PlayerID, Surname,AKA, COUNT(*) AS Played, ROUND(AVG(Kicks),1) AS K, ROUND(AVG(Handballs),1) AS HB, ROUND(AVG(Marks),1) AS M, Season
FROM `PlayerDetails` p1
WHERE Team = 'Team A'
   AND EXISTS (SELECT * FROM `PlayerDetails` p2 WHERE p2.playerID = p1.playerID AND Season = 2018)
GROUP BY PlayerID 
ORDER BY Surname ASC 

Предложение HAVING, которое у вас было - как вы обнаружили - ограничивало запрос только результатами 2018 года. Предложение EXISTS, добавленное мной к WHERE, найдет любого игрока, сыгравшего в 2018 году.

...