That page has a CSV export; it's ~2000 rows.
They appear to have correctly filtered out the "Non-Shooting Incident" sort of results from it (which your picks appear to mostly be) to arrive at the ~900 numbers.
I've also been looking at the export, but I don't see any way to filter down to "Shooting incidents". Just sampling the first 10, 10% of 2000 is looking like way less.
Were you able to find a way to validate the 900 number?
I'm just going in order here, no picking and choosing. Here's the link if anyone wants to follow along: https://www.gunviolencearchive.org/school-shootings
1. A teacher had a gun in their possession, there was no shooting: https://www.gunviolencearchive.org/incident/3099438
2. An adult robbery suspect was found by police on a high school campus, fled the police, and was then shot somewhere else: https://www.gunviolencearchive.org/incident/3098506
3. Parent showed a gun during an argument with the school (this one is closer to bad, but still, no shooting): https://www.gunviolencearchive.org/incident/3098581
4. Teenager brought gun to a baseball game: https://www.gunviolencearchive.org/incident/3098572
5. Adult found trespassing on campus with cocaine and a modified flare gun: https://www.gunviolencearchive.org/incident/3098062
6. Students fought and showed a gun: https://www.gunviolencearchive.org/incident/3098023
7. Student in possession of a gun: https://www.gunviolencearchive.org/incident/3097870
8. Student in possession of a gun: https://www.gunviolencearchive.org/incident/3097949
9. Adult bicyclist dropped a handgun in parking lot of campus while student basketball game was underway inside: https://www.gunviolencearchive.org/incident/3095500
10. Abundant Life Christian School
1 out of the first 10 being what most people would call a "school shooting" brings that 971 cases number into question.