计算与棒球相关的查询的比例

时间:2018-10-18 08:10:12

标签: sql

这是我的两个桌子:

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%的区域内/区域外价格不知所措。

谢谢您的帮助。

1 个答案:

答案 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'