Возникли проблемы с предложением WHERE - PullRequest
0 голосов
/ 17 марта 2019

Я пытаюсь получить результаты по нескольким критериям, но у меня возникают проблемы при объединении двух запросов в один.Я рассчитываю получить средние значения для выигрыша Miami Heat по следующим категориям + средние значения потерь New York Knicks для следующих категорий и объединить их в одно среднее значение.

Так что это мой запрос на Heatкоторый получает именно то, что я хочу

SELECT box_score.team_name, ROUND (AVG (eFG), 3) eFG, ROUND (AVG (OPP_eFG), 3) OPP_eFG, ROUND (AVG (TOV_PCT), 3) TOV_PCT,ROUND (AVG (OPP_TOV_PCT), 3) OPP_TOV_PCT, ROUND (AVG (ORB_PCT), 3) ORB_PCT, ROUND (AVG (DRB_PCT), 3), 3) OPP_FTA_RATE FROM box_score WHERE team_name = "Miami Heat" AND WIN_LOSS = "W" AND game_date <"2019-03-07" </p>

Я также понес потери за рывки, что также привело к тому, что я хотел

WHERE team_name = "New York Knicks" AND WIN_LOSS = "L" AND game_date <"2019-03-07" </p>

все остальное до этой строки было таким же ... моя проблемапытаясь объединить два в один запрос, где я получаю средние вВысокая температура выигрывает, а средняя - в безрезультатных.Я думаю, что проблема в предложении where, но я не могу понять это, я могу получить только нулевые результаты ... вся эта информация из той же таблицы, и я могу получить информацию о команде с помощью идентификатора илиимя ... Я использую SQLite, если это что-то меняет

Это результат выполнения запроса, который я ищу для одной строки данных со средним значением ... однако я хотел бы получить среднее значениеиз этих чисел как в выигрышах Хит, так и в проигрышах Никс, объединенных в одну строку, этот запрос отображает только средние значения в выигрышах Хит.

Средние в тепловой побед* eFG OPP_eFG TOV_PCT OPP_TOV_PCT ORB_PCT DRB_PCT FTA_RATE OPP_FTA_RATE
0,568 0,602 0,146 0,136 0,225 0,787 0,222 0,235

Я хочу объединить два средних в 1 для каждой категории

1 Ответ

1 голос
/ 17 марта 2019

Использовать агрегацию:

SELECT bs.team_name, ROUND(AVG(eFG),3) eFG,
       ROUND(AVG(OPP_eFG),3) OPP_eFG,
       ROUND(AVG(TOV_PCT),3) TOV_PCT,
       ROUND(AVG(OPP_TOV_PCT),3) OPP_TOV_PCT,
       ROUND(AVG(ORB_PCT),3) ORB_PCT,
       ROUND(AVG(DRB_PCT),3) DRB_PCT,
       ROUND(AVG(FTA_RATE),3) FTA_RATE,
       ROUND(AVG(OPP_FTA_RATE),3) OPP_FTA_RATE
FROM box_score bs
WHERE game_date < '2019-03-07' and
      ( (team_name = 'Miami Heat' AND WIN_LOSS = 'W') OR
        (team_name = 'New York Knicks' AND WIN_LOSS = 'L') 
      )
GROUP BY bs.team_name;

Я мог бы также предложить включить WIN_LOSS в SELECT и GROUP BY, поэтому оно также входит в набор результатов.

РЕДАКТИРОВАТЬ:

На основе вашего комментария, просто удалите GROUP BY:

SELECT ROUND(AVG(eFG),3) eFG,
       ROUND(AVG(OPP_eFG),3) OPP_eFG,
       ROUND(AVG(TOV_PCT),3) TOV_PCT,
       ROUND(AVG(OPP_TOV_PCT),3) OPP_TOV_PCT,
       ROUND(AVG(ORB_PCT),3) ORB_PCT,
       ROUND(AVG(DRB_PCT),3) DRB_PCT,
       ROUND(AVG(FTA_RATE),3) FTA_RATE,
       ROUND(AVG(OPP_FTA_RATE),3) OPP_FTA_RATE
FROM box_score bs
WHERE game_date < '2019-03-07' and
      ( (team_name = 'Miami Heat' AND WIN_LOSS = 'W') OR
        (team_name = 'New York Knicks' AND WIN_LOSS = 'L') 
      );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...