Как написать перекрестный запрос с медианой - PullRequest
0 голосов
/ 12 октября 2010

Вот моя таблица

ST NUM
1 1
1 2
1 2
2 1
2 2
2 2
3 2
3 8

Я хочу вернуть запрос, в котором он возвращает медиану NUM для каждого ST

ST NUM
1 2
2 2
3 5

У меня уже есть медиана

SELECT
CONVERT(DECIMAL(10,2), (
(CONVERT (DECIMAL(10,2),
(SELECT MAX(num) FROM
(SELECT TOP 50 PERCENT num FROM dbo.t ORDER BY num ASC) AS H1)
+
(SELECT MIN(sortTime) FROM
(SELECT TOP 50 PERCENT num FROM dbo.t ORDER BY num DESC) AS H2)
))) / 2) AS Median

Любые советы, как это сделать?

1 Ответ

2 голосов
/ 12 октября 2010

попробуйте

With
MedianResult
as
(
Select
ST,NUM ,   
Row_Number() OVER(Partition by ST Order by NUM) as A,
Row_Number() OVER(Partition by ST Order by NUM desc) as B
from **YourTableName**

)
Select ST, Avg(NUM) as Median
From MedianResult
Where Abs(A-B)<=1
Group by ST
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...