I happened to need Median recently and came up with this solution.

SELECT TOP 1
    AVG(main.age) AS _Average,min(main.age) AS _Min,
    CASE WHEN %vid = count(main.age)/2 THEN main.age else 0 END+MAX(CASE WHEN %vid = count(main.age)/2 THEN main.age else 0 END) AS  _Median,
    max(main.age) AS _Max
FROM
(
SELECT TOP all a.Age FROM Sample.Person a
ORDER BY a.Age
) main