FROM
batting
GROUP BY teamID , yearID , lgID , masterID) B, (select
teamID,
yearID,
lgID,
sum(AB),
sum(H),
sum(H) / sum(AB) as avg
FROM
batting
WHERE ab is not null
GROUP BY teamID , yearID , lgID) A
WHERE
A.avg >= B.avg AND A.teamID = B.teamID
AND A.yearID = B.yearID
AND A.lgID = B.lgID
GROUP BY teamID , yearID , lgID) C,
(SELECT
count(masterID) as cnt, yearID, teamID, lgID