Прежде всего, это домашнее задание, но я не ищу ответа любыми способами. Я в классе базы данных, и нам была предоставлена база данных со статистикой в Американской бейсбольной лиге (команды, статистика для каждого человека и т. Д.), Определение схемы для каждой таблицы ниже вопроса. Мне нужно написать следующий запрос:Найти человека с самыми высокими прогонами для каждой команды (DERBY/SQL)
Какая пара колотит в одной команде имела наибольшее количество Хомерсов в паре? В вашем запросе должны быть указаны первые и последние имена каждого теста в паре, а также количество домашних прогонов, каждый из которых попадает.
Так что, в основном, просто возьмите два самых больших прогона в каждой команде и посмотрите, какая команда имеет наибольшую сумму, но у меня возникли проблемы с написанием запроса, который будет генерировать самый высокий результат (в пересчете на homeruns) за команду , То, что у меня до сих пор, похоже на это.
select
nameFirst, nameLast, name, HR
from
Players, Teams, Batting
where
HR >= ALL(select HR from Batting)
and Players.playerID = Batting.playerID;
который отображает правильное название команды (и я знаю это, потому что он отображает 30 кортежи, и это число команд в БД), но количество бежит домой и первое и последнее имя игрока все тоже самое. (В этой базе данных это принц Филдерс для пивоваров, потому что он имеет большинство домашних запусков в базе данных.) Совет о том, как достичь, так это отображение правильного имени и фамилии человека, очень ценится!
CREATE TABLE Players
(
playerID VARCHAR(10), --A unique code asssigned to each player. The playerID
--links the data in this file with records in the other files.
nameFirst VARCHAR(50), --First name
nameLast VARCHAR(50), --Last name
bats CHAR(1), --Player's batting hand (left, right, or both)
throws CHAR(1), --Player's throwing hand (left or right)
PRIMARY KEY (playerID)
);
CREATE TABLE Teams
(
teamID CHAR(3), --Three-letter team code
lgID CHAR(2), --Two-letter league code
divID CHAR(1), --One letter code for the division the team player in
Rank SMALLINT, --Position in final standings in that division
G SMALLINT, --Games played
W SMALLINT, --Games won
L SMALLINT, --Games lost
DivWin CHAR(1), --Division winner (Y or N)
WCWin CHAR(1), --Wild card winner (Y or N)
LgWin CHAR(1), --League champion (Y or N)
WSWin CHAR(1), --World series winner
name VARCHAR(50), --Team's full name
park VARCHAR(255), --Name of team's home ballpark
PRIMARY KEY (teamID)
);
CREATE TABLE Batting
(
playerID VARCHAR(10), --Player ID code
yearID SMALLINT, --Will always be 2011 in data for this assignment
stint SMALLINT, --Used to identify a particular continuous period that
--a player played for one team during the season. For example, a player
--who played during May for the Brewers, was then sent down to the
--minors and came back to play again for the Brewers in August would
--have two stints -- numbered 1 and 2
teamID CHAR(3), --Three-letter team ID
lgID CHAR(2), --Two letter league ID -- NL or AL
G SMALLINT, --Number of games appeared in during this stint
G_batting SMALLINT, --Number of games appeared in as a batter during this stint
AB SMALLINT, --Number of at bats
R SMALLINT, --Number of runs
H SMALLINT, --Number of hits
doubles SMALLINT, --Number of doubles
triples SMALLINT, --Number of triples
HR SMALLINT, --Number of home runs
RBI SMALLINT, --Number of runs batted in
SB SMALLINT, --Number of stolen bases
CS SMALLINT, --Number of times caught trying to steal a base
BB SMALLINT, --Number of base on balls (walks)
SO SMALLINT, --Number of time player struck out
IBB SMALLINT, --Number of intentional walks received
HBP SMALLINT, --Number of time hit by pitch
SF SMALLINT, --Number of sacrifice flied
GIDP SMALLINT, --Number of times grounded into double play
PRIMARY KEY (playerID, stint)
);
Я не эксперт SQL каким-либо образом, но у меня создается впечатление, что если вы хотите сделать математическое выражение, вы можете использовать предложение HAVING. Он работает еще лучше, если вы комбинируете HAVING с MAX (каким-то полем) – Kristian
Хм, я пробовал возиться с инструкцией «Имею», но я не мог ее получить, так что это дало бы мне что-нибудь еще, чем просто человек с наибольшим количеством домашних бегов в БД. – joebro