This query looks very nice and clean. I can't see any obvious or glaring issues here, I do have some ideas for improvement though:
Naming
a
, u
, q
and p
are not all that "expressive" aliases. There is no need to shorten these aliases to be incomprehensible for people outside the SE-System, that don't understand how Posts a
is different from Posts q
Select X
How about also making the number of results variable?
SELECT TOP ##topX:int?100##
allows the user to decide how many results they want.
CTE's
Last time I checked, Data Explorer supported CTE's. Make use of them:
WITH Zombies AS (
SELECT q.Id ZombieId, MAX(a.Score) MaxAnswerScore
-- ...
)
SELECT ##topX:int?100## FROM Zombies