Skip to content

Instantly share code, notes, and snippets.

@not-inept
Created November 2, 2016 16:10
Show Gist options
  • Save not-inept/d5e27eb3c1201307f9e756a911496ccd to your computer and use it in GitHub Desktop.
Save not-inept/d5e27eb3c1201307f9e756a911496ccd to your computer and use it in GitHub Desktop.
-- 1
SELECT nameFirst AS `First Name`, nameLast AS `Last Name`, COUNT(allstarfull.playerID) AS `Appearances`
FROM allstarfull NATURAL JOIN master
GROUP BY playerID HAVING Appearances >= 5;
-- 2
SELECT name
FROM allstarfull NATURAL JOIN teams
GROUP BY teamID
ORDER BY COUNT(allstarfull.teamID) DESC
LIMIT 10;
-- 3
SELECT name AS `Team Name`, `Team Salary`
FROM (
SELECT *
FROM (
SELECT
yearID,
teamID,
SUM(salary) AS `Team Salary`
FROM salaries
GROUP BY yearID, teamID
ORDER BY yearID, `Team Salary` DESC
) AS `RES1`
GROUP BY yearID
) AS `RES2` JOIN teams ON `RES2`.yearID = teams.yearID AND `RES2`.teamID = teams.teamID;
-- 4
SELECT `Year`, nameFirst AS `First Name`, nameLast AS `Last Name`, `Batting Average`
FROM (
SELECT *
FROM (
SELECT
yearID AS `Year`,
H / AB AS `Batting Average`,
playerID
FROM batting
WHERE AB > 100 AND yearID >= 1956 AND stint = 1
GROUP BY `Year`, playerID
ORDER BY `Year`, `Batting Average` DESC
) AS `AllBatters`
WHERE EXISTS(
SELECT *
FROM (
SELECT *
FROM (
SELECT
yearID AS `YearT`,
H / AB AS `Batting AverageT`,
playerID
FROM batting
WHERE AB > 100 AND yearID >= 1956 AND stint = 1
GROUP BY `YearT`, playerID
ORDER BY `YearT`, `Batting AverageT` DESC
) AS `Thing`
GROUP BY `YearT`
) AS `WinnyBatters`
WHERE `WinnyBatters`.`YearT` = `Year` AND `WinnyBatters`.`Batting AverageT` = `Batting Average`
)
) AS `RES` NATURAL JOIN master
ORDER BY `Year`, `Batting Average` DESC
-- 5
SELECT nameFirst AS `First Name`, nameLast AS `Last Name`, `College`
FROM (
SELECT playerID, schoolID AS "College"
FROM (
SELECT DISTINCT
playerID,
schoolID
FROM (
SELECT playerID
FROM halloffame
WHERE inducted = "Y" AND EXISTS(
SELECT halloffame.playerID
FROM collegeplaying
WHERE halloffame.playerID = collegeplaying.playerID
)
) AS `RES` NATURAL JOIN collegeplaying
) AS `RES2`
) AS `RES3` NATURAL JOIN master
-- 6
SELECT AVG(`RES2`.`Appearances`)
FROM (
SELECT
SUM(G_ALL) AS `Appearances`
FROM (
SELECT playerID, G_All
FROM appearances
WHERE EXISTS(
SELECT playerID
FROM managers
WHERE appearances.playerID = managers.playerID
)
) AS `RES`
GROUP BY playerID
) AS `RES2`
-- 7
SELECT `Winning Team Salary`, `Average Team Salary`
FROM (
SELECT
yearID,
name AS `Team Name`,
`Winning Team Salary`
FROM (
SELECT *
FROM (
SELECT
yearID,
teamID,
SUM(salary) AS `Winning Team Salary`
FROM salaries
GROUP BY yearID, teamID
ORDER BY yearID, `Winning Team Salary` DESC
) AS `RES1`
) AS `RES2` NATURAL JOIN teams
WHERE WSWin = 'Y'
) AS `RESL` NATURAL JOIN (
SELECT
yearID,
AVG(`Team Salary`) as `Average Team Salary`
FROM (
SELECT
yearID,
teamID,
SUM(salary) AS `Team Salary`
FROM salaries
GROUP BY yearID, teamID
ORDER BY yearID, `Team Salary` DESC
) AS `RES1`
GROUP BY yearID
) AS `RESR`;
-- 8
SELECT yearID, teamID, nameFirst as `First Name`, nameLast as `Last Name`
FROM (
SELECT
managers.yearID,
managers.teamID,
playerID
FROM (
SELECT
yearID,
teamID
FROM (
-- GET ALL WINNERS
SELECT
yearID,
W AS `WinnersWins`
FROM teams
WHERE WSWin = 'Y'
) AS `WINNERS` NATURAL JOIN (
-- GET ALL LOSERS
SELECT
yearID,
teamID,
W
FROM teams
WHERE WSWin != 'Y'
) AS `LOSERS`
WHERE W > WinnersWins
) AS `BigShots`
JOIN managers ON `BigShots`.yearID = managers.yearID AND `BigShots`.teamID = managers.teamID
) AS `WeGotDemIDs` LEFT JOIN master ON `WeGotDemIDs`.`playerID` = master.`playerID`
ORDER BY yearID;
-- 9
SELECT yearID, teamID, park AS `Park Name`, attendance / G AS `Average Attendance`
FROM teams
WHERE
WSWin = 'Y' AND
G IS NOT NULL AND
attendance IS NOT NULL
-- 10
SELECT yearID, teamID, park, `Winning Average Attendance`, `Non-Winning Average Attendance`
FROM (
SELECT
yearID,
teamID,
park,
attendance / G AS `Winning Average Attendance`
FROM teams
WHERE WSWin = 'Y' AND
G IS NOT NULL AND
attendance IS NOT NULL
) AS `WhenWon` NATURAL JOIN (
SELECT
teamID,
park,
SUM(attendance) / SUM(G) AS `Non-Winning Average Attendance`
FROM (
SELECT
yearID,
teamID,
park,
attendance,
G
FROM teams
WHERE WSWin != 'Y' AND
G IS NOT NULL AND
attendance IS NOT NULL
) AS `NonWinners`
GROUP BY teamID, park
) AS `WhenLost`
ORDER BY yearID
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment