这是我的两个桌子:
BIO -包含玩家的履历信息,并包含以下各列
i。 PLAYER_ID
ii。 PLAYER_NAME
iii。 DATE_OF_BIRTH
iv。 TEAM_NAME
投手-包含以下各列的击球手和投手统计信息
i。 GAME_DATE(格式为YYYY-MM-DD,例如2016-01-01)
ii。 BATTER_PLAYER_ID
iii。 PITCHER_PLAYER_ID
iv。 PITCHER_THROW_SIDE(左/右)
v。 BATTER_HAND(左/右)
vi。 PITCH_TYPE(变更,弯弧球,切纸器,4缝快速球,指关节,2缝
快速球,滑块,分离器)
vii。 PITCH_CALL(球,接球手干扰,犯规球,HitByPitch,InPlay,StrikeCalled,
StrikeSwinging)
viii。 IN_ZONE(是/否)
我想要一个查询,该查询返回2016-2017赛季快球的区域内或区域外挥杆罢工率大于15%的球员的姓名。我还希望球队的名称,投手的惯用性,并包括切刀和沉降片作为快球。
这是我到目前为止所拥有的:
SELECT b.PLAYER_NAME, b.TEAM_NAME, p.PITCHER_THROW_SIDE
FROM BIO AS b INNER JOIN PITCHES AS p
ON b.PLAYER_ID = p.PITCHER_PLAYER_ID
WHERE p.PITCH_TYPE = '4-seam fastball' OR p.PITCH_TYPE = '2-Seam' OR p.PITCH_TYPE = 'Cutter'
AND p.GAME_DATE BETWEEN 2016-01-01 AND 2017-12-31
GROUP BY b.PLAYER_ID
HAVING (Count(IN_ZONE)) ....
我认为这是个正确的主意...但是我现在对于如何包括15%的区域内/区域外价格不知所措。
谢谢您的帮助。
答案 0 :(得分:0)
您如何计算区域内或区域外摆动打击率大于15%? 如果是NR_YES /总计
HAVING sum(case when IN_ZONE='YES' then 1 else 0)/count(*)>0.15
如果Nr_Yes / Nr_NO
HAVING sum(case when IN_ZONE='YES' then 1 else 0)/count(*)>3/17
请注意3/17是15/85。因为只有是与否的可能性
还要注意,我使用0和1的总和来模拟
count(*) where IN_ZONE='YES'