For two sums and three medians, on a single table, I honestly can't see the benefit of using a complicated dynamic or function-based solution.
It is quite easy to construct a single query using Peter Larsson's median method that I showed you before:
CREATE TABLE dbo.Listing
(
ListingCol1 integer NULL,
ListingCol2 integer NULL,
ListingCol3 integer NULL,
ListingCol4 integer NULL,
ListingCol5 integer NULL
);
CREATE TABLE dbo.Result
(
Col1 integer NULL,
Col2 integer NULL,
Col3 integer NULL,
Col4 integer NULL,
Col5 integer NULL
);
-- Just to show indexes are helpful for the median calculations
CREATE INDEX i ON dbo.Listing (ListingCol3)
CREATE INDEX j ON dbo.Listing (ListingCol4)
CREATE INDEX k ON dbo.Listing (ListingCol5)
###Solution
INSERT dbo.Result
(
Col1,
Col2,
Col3,
Col4,
Col5
)
SELECT
SC.SumCol1,
SC.SumCol2,
SQ3.MedianCol3,
SQ4.MedianCol4,
SQ5.MedianCol5
FROM
(
-- Sums + counts needed for the median calculations
SELECT
SumCol1 = SUM(L.ListingCol1),
SumCol2 = SUM(L.ListingCol2),
CountCol3 = COUNT_BIG(L.ListingCol3),
CountCol4 = COUNT_BIG(L.ListingCol4),
CountCol5 = COUNT_BIG(L.ListingCol5)
FROM dbo.Listing AS L
) AS SC
CROSS APPLY
(
-- Median for column 3
SELECT
MedianCol3 = AVG(1.0 * SQ.ListingCol3)
FROM
(
SELECT
L3.ListingCol3
FROM dbo.Listing AS L3
WHERE
L3.ListingCol3 IS NOT NULL
ORDER BY
L3.ListingCol3 ASC
OFFSET (SC.CountCol3 - 1) / 2 ROWS
FETCH NEXT 1 + (1 - SC.CountCol3 % 2) ROWS ONLY
) AS SQ
) AS SQ3
CROSS APPLY
(
-- Median for column 4
SELECT
MedianCol4 = AVG(1.0 * SQ.ListingCol4)
FROM
(
SELECT
L4.ListingCol4
FROM dbo.Listing AS L4
WHERE
L4.ListingCol4 IS NOT NULL
ORDER BY
L4.ListingCol4 ASC
OFFSET (SC.CountCol4 - 1) / 2 ROWS
FETCH NEXT 1 + (1 - SC.CountCol4 % 2) ROWS ONLY
) AS SQ
) AS SQ4
CROSS APPLY
(
-- Median for column 5
SELECT
MedianCol5 = AVG(1.0 * SQ.ListingCol5)
FROM
(
SELECT
L5.ListingCol5
FROM dbo.Listing AS L5
WHERE
L5.ListingCol5 IS NOT NULL
ORDER BY
L5.ListingCol5 ASC
OFFSET (SC.CountCol5 - 1) / 2 ROWS
FETCH NEXT 1 + (1 - SC.CountCol5 % 2) ROWS ONLY
) AS SQ
) AS SQ5;
Expected execution plan shape: