Weather Observation Station 20

  • + 0 comments
    DECLARE @NLCount INT = (
        SELECT COUNT([LAT_N])
        FROM STATION
        WHERE [LAT_N] IS NOT NULL
    );
    
    DECLARE @NLArray TABLE (
        [ARR_INDEX] INT IDENTITY(1,1),
        [LAT_N] DECIMAL(10,4)
    );
    
    INSERT INTO @NLArray
    SELECT [LAT_N]
    FROM STATION
    WHERE [LAT_N] IS NOT NULL
    ORDER BY [LAT_N];
    
    SELECT CAST(
    CASE
        WHEN (@NLCount % 2 = 0) THEN (
            SELECT AVG([LAT_N])
            FROM @NLArray
            WHERE [ARR_INDEX] IN (
                @NLCount / 2,
                (@NLCount / 2) + 1
            )
        )
        ELSE (
            SELECT [LAT_N]
            FROM @NLArray
            WHERE [ARR_INDEX] = (@NLCount + 1) / 2
        )
    END AS DECIMAL(10,4)) AS Median;