Присоединение к таблицам и возврат правильной агрегации - PullRequest
0 голосов
/ 02 июля 2018

Я использую базу данных Шона Лахмана по бейсболу, чтобы объединять пробеги, попадания и «в битах», выигрыши и потери по командам в период с 2010 по 2015 год. Я хочу присоединиться к таблице команд и ватин и использовать группу по функциям в teamID возвращать общее количество пробежек, попаданий в биты, а также выигрыши и поражения по командам из таблицы команд.

Например, из таблицы команд я хочу возвращать победы и поражения в течение года

team ID Name             Wins  Losses Year
ARI Arizona Diamondbacks    65  97  2010
ARI Arizona Diamondbacks    94  68  2011

И из таблицы ватина это вывод, который я хочу

year   teamID Runs Hits  At Bats
2012    ARI 734   1416  5462
2015    ARI 720  1494   5649

Я пробовал следующий запрос, но он возвращает завышенные значения для столбцов выигрышей и проигрышей:

select b.yearID, b.teamID, SUM(b.R) as Runs, SUM(b.H) as Hits, SUM(b.AB) as At_Bats, 
t.name as Team_Name, SUM(t.W) as Wins, SUM(t.L) as Losses
from Batting b, Teams t
where b.teamID = t.teamID and b.yearID=t.yearID and b.yearID between '2010' and '2015'
group by b.teamID, b.yearID, t.name, t.W, t.L
order by b.teamID 

Документацию можно найти здесь для базы данных http://www.seanlahman.com/files/database/readme2017.txt

1 Ответ

0 голосов
/ 02 июля 2018

Хотя я не могу найти этого в документации, я предполагаю, что каждая комбинация teamID и yearID однозначно идентифицирует запись в таблице команд. При суммировании выигрышей и проигрышей вы умножаете их на количество связанных игроков. Так что просто не строите суммы на t.W и t.L:

select b.yearID, b.teamID, SUM(b.R) as Runs, SUM(b.H) as Hits, SUM(b.AB) as At_Bats, 
t.name as Team_Name, t.W as Wins, t.L as Losses
from Batting b, Teams t
where b.teamID = t.teamID and b.yearID=t.yearID and b.yearID between '2010' and '2015'
group by b.teamID, b.yearID, t.name, t.W, t.L
order by b.teamID  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...