Baseball Detective

I don’t know if you’ve seen this one:

I haven’t till a while ago. My first thought was not really a thought, but more of an uncontrolled thoughtless laughter. Second one was – that’s why he wears double ear flaps. And the third was – I want to see more of this.

Now, I didn’t have any information on the context. So I decided to play some detective work to try to find out when this happened. That’s where it gets nerdy. That’s where I started to have more fun than a sane person querying databases* should.

* I have a play by play DB, courtesy of retrosheet data.

I knew the batter was Victorino. I knew, by the crowd behind, that they were playing in Philadelphia. I couldn’t tell the visiting team, though, although my first guess was Dodgers. I couldn’t decipher the name on the catcher’s back, although it did look as it started with “Ha’ and had an ‘s’ in it somewhere along the way. Some Harris, Harisson or Hairston variety perhaps. By Victorino’s posture, I assumed he was not agreeing on a called strike. By the positioning of the catcher, I assumed the pitch was on the inner third of the plate.

So, I had some data to work with.

Here is the step by step search, although I actually did it in one big SQL statement.

1. Check who the catcher was

select * from tblPlayers where [last] like ‘ha%s%’ and Id in (select distinct dC from tblAtBats)
id first last
———– ——————–
451109 Brett Hayes

Turns out that the only guy who caught in MLB in 2011 and fits the letters to be seen on the uniform goes by the name of Brett Hayes. Now let’s see when he caught during Victorino’s at bat:

select gameId, abId from tblAtBats where batter = 425664 and dC = 451109
gameId abId
———— ———–
FLO201005290 1
FLO201005290 16
FLO201005290 28
FLO201005290 46
PHI201106150 7
PHI201106150 20
PHI201106150 32
PHI201106150 51
PHI201106150 68

We know the game was in Philly, so we can discard the first 4 AB and only go with the last five. Now, let’s get the called strikes:

select abId, PitchInAB from tblPitches where gameID = ‘PHI201106150’ and abId in (7, 20, 32, 51, 68)
and des = ‘called strike’
abId PitchInAB
———– ———–
7 3
20 3
32 1
51 1
68 2

He had one in every plate appearance. But we are looking for the one where the ball was inside:

select gameId, abId, PitchInAB from tblPitches where gameID = ‘PHI201106150’ and abId in (7, 20, 32, 51, 68)
and des = ‘called strike’ and px > 0.236
gameId abId PitchInAB
———— ———– ———–
PHI201106150 7 3

(The “0.236” thing is one sixth of 17/12 feet. God bless imperial measurements.)

So there it is, the suspects narrowed down to one – 3rd pitch of the 7th at bat of the game played in Philadelphia on June 15th 2011. The only thing that would have made it any better would be the “tfs_zulu” tracking, which includes time stamps for every pitch, but was not kept during that game. So, I had to search through recording of that game a bit, until I found Victorino’s first at bat. It was worth it. I laughed again. If you want to see it, just go to around 18:40 on the recording.

And to keep it nerdy till the end, here is the single SQL statement:

select p.gameId, p.abId, pitchInAB from tblPitches p, tblAtBats ab, tblGames g
where p.GameId = ab.gameId
and p.abId = ab.abId
and g.gameId = ab.gameId
and dC in (select id from tblPlayers where [last] like ‘ha%s%’)
and batter in (select id from tblPlayers where [last] like ‘victorino’)
and homeTeam = ‘phi’
and p.des = ‘called strike’
and px > 0.236

Leave a Reply

Your email address will not be published. Required fields are marked *