• Very good catch Jesse!

    Jesse McLain (4/3/2009)


    There's only one problem with the calculation of the median: if the row count of the sample data is even, then the median is not unique (see http://en.wikipedia.org/wiki/Median). Here's a version of the calc that accounts for even row counts:

    ;WITH

    TopHalf AS (

    SELECT TOP 50 PERCENT DataValue

    FROM DataSet

    ORDER BY DataValue ASC

    )

    ,BottomHalf AS (

    SELECT TOP 50 PERCENT DataValue

    FROM DataSet

    ORDER BY DataValue DESC

    )

    ,BottomOfTopHalf AS (

    SELECT TOP 1 DataValue

    FROM TopHalf

    ORDER BY DataValue DESC

    )

    ,TopOfBottomHalf AS (

    SELECT TOP 1 DataValue

    FROM BottomHalf

    ORDER BY DataValue ASC

    )

    SELECT

    Median = (BottomOfTopHalf.DataValue + TopOfBottomHalf.DataValue) / 2.0

    FROM BottomOfTopHalf, TopOfBottomHalf