Code:
DECLARE @CostCentreOne UNIQUEIDENTIFIER = NEWID();
DECLARE @CostCentreTwo UNIQUEIDENTIFIER = NEWID();
DECLARE @CostCentreThree UNIQUEIDENTIFIER = NEWID();
CREATE TABLE #CostCentreValues
(
CostCentreId UNIQUEIDENTIFIER,
CostCentreName VARCHAR(255),
ServiceCharge VARCHAR(255),
ChargeValue INT
);
INSERT INTO #CostCentreValues
(
CostCentreId,
CostCentreName,
ServiceCharge,
ChargeValue
)
VALUES
( @CostCentreOne, 'CostCentreOne', -- CostCentreId - uniqueidentifier
'Service Charge 1', -- ServiceCharge - varchar(255)
10 -- ChargeValue - int
);
INSERT INTO #CostCentreValues
(
CostCentreId,
CostCentreName,
ServiceCharge,
ChargeValue
)
VALUES
( @CostCentreOne, 'CostCentreOne', -- CostCentreId - uniqueidentifier
'Service Charge 2', -- ServiceCharge - varchar(255)
15 -- ChargeValue - int
);
INSERT INTO #CostCentreValues
(
CostCentreId,
CostCentreName,
ServiceCharge,
ChargeValue
)
VALUES
( @CostCentreOne, 'CostCentreOne', -- CostCentreId - uniqueidentifier
'Service Charge 3', -- ServiceCharge - varchar(255)
20 -- ChargeValue - int
);
INSERT INTO #CostCentreValues
(
CostCentreId,
CostCentreName,
ServiceCharge,
ChargeValue
)
VALUES
( @CostCentreOne, 'CostCentreOne', -- CostCentreId - uniqueidentifier
'Service Charge 4', -- ServiceCharge - varchar(255)
20 -- ChargeValue - int
);
INSERT INTO #CostCentreValues
(
CostCentreId,
CostCentreName,
ServiceCharge,
ChargeValue
)
VALUES
( @CostCentreOne, 'CostCentreOne', -- CostCentreId - uniqueidentifier
'Service Charge 5', -- ServiceCharge - varchar(255)
25 -- ChargeValue - int
);
INSERT INTO #CostCentreValues
(
CostCentreId,
CostCentreName,
ServiceCharge,
ChargeValue
)
VALUES
( @CostCentreOne, 'CostCentreOne', -- CostCentreId - uniqueidentifier
'Service Charge 6', -- ServiceCharge - varchar(255)
25 -- ChargeValue - int
);
INSERT INTO #CostCentreValues
(
CostCentreId,
CostCentreName,
ServiceCharge,
ChargeValue
)
VALUES
( @CostCentreTwo, 'CostCentreTwo', -- CostCentreId - uniqueidentifier
'Service Charge 1', -- ServiceCharge - varchar(255)
5 -- ChargeValue - int
);
INSERT INTO #CostCentreValues
(
CostCentreId,
CostCentreName,
ServiceCharge,
ChargeValue
)
VALUES
( @CostCentreTwo, 'CostCentreTwo', -- CostCentreId - uniqueidentifier
'Service Charge 2', -- ServiceCharge - varchar(255)
25 -- ChargeValue - int
);
INSERT INTO #CostCentreValues
(
CostCentreId,
CostCentreName,
ServiceCharge,
ChargeValue
)
VALUES
( @CostCentreTwo, 'CostCentreTwo', -- CostCentreId - uniqueidentifier
'Service Charge 3', -- ServiceCharge - varchar(255)
25 -- ChargeValue - int
);
INSERT INTO #CostCentreValues
(
CostCentreId,
CostCentreName,
ServiceCharge,
ChargeValue
)
VALUES
( @CostCentreTwo, 'CostCentreTwo', -- CostCentreId - uniqueidentifier
'Service Charge 4', -- ServiceCharge - varchar(255)
35 -- ChargeValue - int
);
INSERT INTO #CostCentreValues
(
CostCentreId,
CostCentreName,
ServiceCharge,
ChargeValue
)
VALUES
( @CostCentreTwo, 'CostCentreTwo', -- CostCentreId - uniqueidentifier
'Service Charge 5', -- ServiceCharge - varchar(255)
40 -- ChargeValue - int
);
INSERT INTO #CostCentreValues
(
CostCentreId,
CostCentreName,
ServiceCharge,
ChargeValue
)
VALUES
( @CostCentreTwo, 'CostCentreTwo', -- CostCentreId - uniqueidentifier
'Service Charge 6', -- ServiceCharge - varchar(255)
40 -- ChargeValue - int
);
INSERT INTO #CostCentreValues
(
CostCentreId,
CostCentreName,
ServiceCharge,
ChargeValue
)
VALUES
( @CostCentreThree, 'CostCentreThree', -- CostCentreId - uniqueidentifier
'Service Charge 1', -- ServiceCharge - varchar(255)
15 -- ChargeValue - int
);
INSERT INTO #CostCentreValues
(
CostCentreId,
CostCentreName,
ServiceCharge,
ChargeValue
)
VALUES
( @CostCentreThree, 'CostCentreThree', -- CostCentreId - uniqueidentifier
'Service Charge 2', -- ServiceCharge - varchar(255)
15 -- ChargeValue - int
);
INSERT INTO #CostCentreValues
(
CostCentreId,
CostCentreName,
ServiceCharge,
ChargeValue
)
VALUES
( @CostCentreThree, 'CostCentreThree', -- CostCentreId - uniqueidentifier
'Service Charge 3', -- ServiceCharge - varchar(255)
15 -- ChargeValue - int
);
INSERT INTO #CostCentreValues
(
CostCentreId,
CostCentreName,
ServiceCharge,
ChargeValue
)
VALUES
( @CostCentreThree, 'CostCentreThree', -- CostCentreId - uniqueidentifier
'Service Charge 4', -- ServiceCharge - varchar(255)
50 -- ChargeValue - int
);
INSERT INTO #CostCentreValues
(
CostCentreId,
CostCentreName,
ServiceCharge,
ChargeValue
)
VALUES
( @CostCentreThree, 'CostCentreThree', -- CostCentreId - uniqueidentifier
'Service Charge 5', -- ServiceCharge - varchar(255)
55 -- ChargeValue - int
);
INSERT INTO #CostCentreValues
(
CostCentreId,
CostCentreName,
ServiceCharge,
ChargeValue
)
VALUES
( @CostCentreThree, 'CostCentreThree', -- CostCentreId - uniqueidentifier
'Service Charge 6', -- ServiceCharge - varchar(255)
65 -- ChargeValue - int
);
SELECT DISTINCT
CostCentreValues.CostCentreId AS CostCentre,
CostCentreValues.CostCentreName,
PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY CostCentreValues.ChargeValue ASC) OVER (PARTITION BY CostCentreValues.CostCentreId) AS MedianPerCostCentre
FROM #CostCentreValues AS [CostCentreValues]
ORDER BY CostCentreValues.CostCentreId
;WITH Mode AS (SELECT CostCentreId, CostCentreName, ChargeValue, COUNT(*) AS [Count],
RANK() OVER(PARTITION BY CostCentreId ORDER BY COUNT(*) DESC, CostCentreId) AS [RowNum] FROM #CostCentreValues
GROUP BY CostCentreId,
CostCentreName,
ChargeValue)
SELECT Mode.CostCentreId,
Mode.CostCentreName,
Mode.ChargeValue,
Mode.RowNum FROM Mode WHERE Mode.RowNum = 1
DROP TABLE #CostCentreValues;

Leave a comment: