The issue is that you are doing a complex calculation and not giving it a name, so it is trying to return the column name as the calculation and that has the '-' character that is a math operator and that throws the whole thing off.
The solution is to use AS to assign a name to your calculated result like:
$pab->setQuery("SELECT
((SELECT COUNT(pa) as pabpct FROM bat WHERE (teamID = ? ) AND
(
(result = 'BB') OR
(result = 'HBP') OR
(result = '1B') OR
(move_run = '1') OR
(xbh = '1') OR
(OB = '1') OR
(result = 'Bunt') OR
(result = '2B') OR
(result = '3B') OR
(result = 'HR') OR
(result = 'SC-Fly') OR
(result = 'D3-Safe') OR
(result = 'SC-BNT') OR
(rbi > '0') OR
(result = 'ROE-No Out')
)) / (SELECT COUNT(pa) FROM bat)) AS totpabpct");
That way it returns your calculated number as a column named: totpabpct
before it was trying to create a column named: "((SELECT COUNT(pa) as pabpct FROM bat WHERE (teamID = ? ) AND
(
(result = 'BB') OR
(result = 'HBP') OR
(result = '1B') OR
(move_run = '1') OR
(xbh = '1') OR
(OB = '1') OR
(result = 'Bunt') OR
(result = '2B') OR
(result = '3B') OR
(result = 'HR') OR
(result = 'SC-Fly') OR
(result = 'D3-Safe') OR
(result = 'SC-BNT') OR
(rbi > '0') OR
(result = 'ROE-No Out')
)) / (SELECT COUNT(pa) FROM bat))"
Which almost was allowed if not for the "-" characters in it.