Хобрук: Ваш путь к мастерству в программировании

php/mysql - Расчеты по результатам матчей (голов)

У меня есть база данных со всеми футбольными матчами за сезон, и я хочу сделать несколько простых расчетов с результатами. Вот как выглядит таблица:

+----------+----------+---------------+---------------+--+
| HomeTeam | AwayTeam | HomeTeamGoals | AwayTeamGoals |  |
+----------+----------+---------------+---------------+--+
| team1    | team2    |             3 |             1 |  |
| team3    | team4    |             1 |             2 |  |
| team1    | team3    |             4 |             4 |  |
| team4    | team2    |             0 |             1 |  |
+----------+----------+---------------+---------------+--+

Теперь я хочу рассчитать 4 вещи для каждой команды:
- общее количество голов, забитых в домашних играх
- общее количество голов, забитых в выездных играх
- общее количество голов, забитых в домашних играх
- общее количество голов, забитых в гостях. игры

С помощью этого запроса я правильно получаю всю информацию о домашних играх:

SELECT HomeTeam, SUM(HomeTeamGoals) as HomeTeamGoals, SUM(AwayTeamGoals) as AwayTeamGoals
FROM games
GROUP BY HomeTeam

Но как мне теперь получить информацию о выездных играх (из того же запроса)?

Результат должен быть следующим с данными из таблицы выше:

+-------+----------+--------------+----------+--------------+
| team  | home for | home against | away for | away against |
+-------+----------+--------------+----------+--------------+
| team1 |        7 |            5 |        0 |            0 |
| team2 |        0 |            0 |        2 |            3 |
| team3 |        1 |            2 |        4 |            4 |
| team4 |        0 |            1 |        2 |            1 |
+-------+----------+--------------+----------+--------------+
25.09.2018

  • в таблице, которой вы поделились, нет поля FTHG или FTAH. Запрос не соответствует таблице 25.09.2018
  • @LelioFaieta Плохо, теперь исправлено в запросе. 25.09.2018
  • показать ожидаемый результат в виде таблицы 25.09.2018
  • @fa06 добавлено в оригинал. 25.09.2018
  • @Awesom-о, ты можешь проверить ответ 25.09.2018

Ответы:



2

Вы можете попробовать это

Вход:

create table goals(
homeTeam varchar(10),
awayTeam varchar(10),
homeTeamGoals tinyint,
awayTeamGoals tinyint
);
insert into goals values('team1','team2',3,1),('team3','team4',1,2),('team1','team3',4,4),('team4','team2',0,1);

введите здесь описание изображения

Выход:

select totalTeams.team as hometeam,
  case when a.totalHomeGoals IS NULL THEN 0 ELSE a.totalHomeGoals END as totalHomeGoals,
  case when a.totalHomeAgainstGoals IS NULL THEN 0 ELSE a.totalHomeAgainstGoals END as totalHomeAgainstGoals,
  case when b.totalAwayGoals IS NULL THEN 0 ELSE b.totalAwayGoals END as totalAwayGoals,
  case when b.totalAwayAgainstGoals IS NULL THEN 0 ELSE b.totalAwayAgainstGoals END as totalAwayAgainstGoals
      from (select homeTeam as team from goals union select awayTeam from goals) as totalTeams 
      left join (select homeTeam as team, sum(homeTeamGoals) as totalHomeGoals,sum(awayTeamGoals) as totalHomeAgainstGoals from goals group by hometeam) as a on totalTeams.team=a.team
      left join (select awayTeam as team,sum(awayTeamGoals) as totalAwayGoals,sum(homeTeamGoals) as totalAwayAgainstGoals from goals group by awayTeam) as b on totalTeams.team=b.team 
      order by hometeam ;

введите здесь описание изображения

25.09.2018
Новые материалы

Понимание СТРУКТУРЫ ДАННЫХ И АЛГОРИТМА.
Что такое структуры данных и алгоритмы? Термин «структура данных» используется для описания того, как данные хранятся, а алгоритм используется для описания того, как данные сжимаются. И данные, и..

Как интегрировать модель машинного обучения на ios с помощью CoreMl
С выпуском новых функций, таких как CoreML, которые упростили преобразование модели машинного обучения в модель coreML. Доступная модель машинного обучения, которую можно преобразовать в модель..

Создание успешной организации по науке о данных
"Рабочие часы" Создание успешной организации по науке о данных Как создать эффективную группу по анализу данных! Введение Это обзорная статья о том, как создать эффективную группу по..

Технологии и проблемы будущей работы
Изучение преимуществ и недостатков технологий в образовании В быстро меняющемся мире технологии являются решающим фактором в формировании будущего работы. Многие отрасли уже были..

Игорь Минар из Google приедет на #ReactiveConf2017
Мы рады сообщить еще одну замечательную новость: один из самых востребованных спикеров приезжает в Братиславу на ReactiveConf 2017 ! Возможно, нет двух других кланов разработчиков с более..

Я собираюсь научить вас Python шаг за шагом
Привет, уважаемый энтузиаст Python! 👋 Готовы погрузиться в мир Python? Сегодня я приготовил для вас кое-что интересное, что сделает ваше путешествие более приятным, чем шарик мороженого в..

Альтернатива шаблону исходящих сообщений для архитектуры микросервисов
Познакомьтесь с двухэтапным сообщением В этой статье предлагается альтернативный шаблон для папки Исходящие : двухэтапное сообщение. Он основан не на очереди сообщений, а на..