Was just looking at the roster of my son's (former) team, where he is now a senior, getting ready to graduate.
His school is a powerhouse D3 that has recently won the D3 World Series (though they had a tough time of it last year). My son decided to voluntarily hang up his cleats sophomore year for various reasons.
30 or so guys were in his freshman class. From what we were able to gather all were "recruited" to one extent or another.
A few of them made the varsity roster freshman year - 4 or 5 I think. Of those several, only two played significant roles -- one first as a reliever and eventually as a starting pitcher, midway through the season, one a first baseman.
12 other freshman guys, including my son, played mostly JV, though a few of them saw limited action on the varsity throughout the season.
Of that entering class of 30 or so, 3 are on the roster this year as seniors.
There are several other seniors on the roster. But all of them are transfers who did not start in the program freshman year. Though the school is a D-3 it is really run more like a D-2. Every year they bring in a fair number of junior college transfers and/or D1 and D2 drop-downs. So the competition for roster spots for incoming Frosh is very intense. (This year that are 5 frosh on the Varsity Roster. The JV roster is not yet published.)
I haven't done a comparative study, but that's strikes me as quite a bit of attrition. Attrition probably varies from program to program at all levels. Which leads me to suggest that if you are looking at colleges for your son to play at, I would definitely make a point of figuring out what degree of "roster churn" the program regularly experiences. We did a little bit of that in our search. But I think if we had done more, my son might have chosen one of the other 4 programs that expressed strong interest in him.