Как найти медиану, 2-е стандартное отклонение, мин, макс и расчет выбросов 2008 года
Как найти медиану, 2 стандартных отклонения, минимальный диапазон , максимальный диапазон в SQL Server 2008?
Actual Table: ============= +-----+-----+------+-------+------------+ | Rat | Cat | A | B | C | +-----+-----+------+-------+------------+ | AAA | 1 | 6.5 | 6.25 | 2.56 | | AAA | 3 | 5.25 | 7.36 | 3.25 | | AAA | 5 | 3.25 | 6.25 | 4.25 | | AAA | 7 | 6.25 | 6.32 | 6.35 | | AA | 1 | 7.23 | 8.52 | 7.35 | | AA | 3 | 7.83 | 7.01 | 6.52 | | AA | 5 | 7.2 | 7.03 | 4.52 | | AA | 7 | 7.14 | 5.03 | 6.32 | +-----+-----+------+-------+------------+ Expected Result: ================ --------+-------------+-------+-----+-------------+ Median | 2StanddDevi | Count | Min | Max Outlier | --------+-------------+-------+-----+-------------+ 6.25 | 4.412270768 | | | | 5.25 | 4.110490644 | | | | 4.25 | 3.055050463 | | | | 6.32 | 0.102632029 | | | | 7.35 | 1.425342064 | | | | 7.01 | 1.32378246 | | | | 7.03 | 3.001266399 | | | | 6.32 | 2.127377102 | | | | --------+-------------+-------+-----+-------------+
Приведенный ниже запрос я использую, но не могу получить медианное значение
while (Rec > 0) begin set Id=Id+1; if(Id=1) begin set Sqlqry = 'insert into tempCal (Median) ' set Sqlqry = Sqlqry + ' SELECT cast(AVG(1.0 * '+olval+') as decimal(10,2)) AS Median from (SELECT isnull('+colval+','''') AAA, ra = ROW_NUMBER() OVER (ORDER BY Rating, Id ), rd = ROW_NUMBER() OVER (ORDER BY Rat DESC, Id desc) from temptbl) as x WHERE ra BETWEEN rd - 1 AND rd + 1;' exec(Sqlqry) end select * from tempCal set @Rec=@Rec-1; end
Что я уже пробовал:
How to find the Median, 2 standard deviations, min range , max range in SQL Server 2008? Actual Table: ============= +-----+-----+------+-------+------------+ | Rat | Cat | A | B | C | +-----+-----+------+-------+------------+ | AAA | 1 | 6.5 | 6.25 | 2.56 | | AAA | 3 | 5.25 | 7.36 | 3.25 | | AAA | 5 | 3.25 | 6.25 | 4.25 | | AAA | 7 | 6.25 | 6.32 | 6.35 | | AA | 1 | 7.23 | 8.52 | 7.35 | | AA | 3 | 7.83 | 7.01 | 6.52 | | AA | 5 | 7.2 | 7.03 | 4.52 | | AA | 7 | 7.14 | 5.03 | 6.32 | +-----+-----+------+-------+------------+ Expected Result: ================ --------+-------------+-------+-----+-------------+ Median | 2StanddDevi | Count | Min | Max Outlier | --------+-------------+-------+-----+-------------+ 6.25 | 4.412270768 | | | | 5.25 | 4.110490644 | | | | 4.25 | 3.055050463 | | | | 6.32 | 0.102632029 | | | | 7.35 | 1.425342064 | | | | 7.01 | 1.32378246 | | | | 7.03 | 3.001266399 | | | | 6.32 | 2.127377102 | | | | --------+-------------+-------+-----+-------------+ The below query am using, but not able to get median value while (Rec > 0) begin set Id=Id+1; if(Id=1) begin set Sqlqry = 'insert into tempCal (Median) ' set Sqlqry = Sqlqry + ' SELECT cast(AVG(1.0 * '+olval+') as decimal(10,2)) AS Median from (SELECT isnull('+colval+','''') AAA, ra = ROW_NUMBER() OVER (ORDER BY Rating, Id ), rd = ROW_NUMBER() OVER (ORDER BY Rat DESC, Id desc) from temptbl) as x WHERE ra BETWEEN rd - 1 AND rd + 1;' exec(Sqlqry) end select * from tempCal set @Rec=@Rec-1; end
OriginalGriff
"он показывает неправильное значение в sql server 2008."
Итак, какие значения вы ожидали, что вы получили, и какой код вы использовали, чтобы получить их?
Используйте виджет "улучшить вопрос", чтобы отредактировать свой вопрос и предоставить более подробную информацию.
Patrice T
Покажите фактический результат и ожидаемый результат для этих данных.
IsaiSelvan
Как найти медиану, 2 стандартных отклонения, минимальный диапазон , максимальный диапазон в SQL Server 2008?
Фактическая Таблица:
=============
+-----+-----+------+-------+------------+
| Крыса | Кошка | A | B | C |
+-----+-----+------+-------+------------+
| ААА | 1 | 6.5 | 6.25 | 2.56 |
| ААА | 3 | 5.25 | 7.36 | 3.25 |
| ААА | 5 | 3.25 | 6.25 | 4.25 |
| ААА | 7 | 6.25 | 6.32 | 6.35 |
| АА| 1 | 7.23 | 8.52 | 7.35 |
| АА| 3 | 7.83 | 7.01 | 6.52 |
| АА| 5 | 7.2 | 7.03 | 4.52 |
| АА| 7 | 7.14 | 5.03 | 6.32 |
+-----+-----+------+-------+------------+
ожидаемый результат:
================
--------+-------------+-------+-----+-------------+
Медиана | 2StanddDevi | количество | мин | макс выброс |
--------+-------------+-------+-----+-------------+
6.25 | 4.412270768 | | | |
5.25 | 4.110490644 | | | |
4.25 | 3.055050463 | | | |
6.32 | 0.102632029 | | | |
7.35 | 1.425342064 | | | |
7.01 | 1.32378246 | | | |
7.03 | 3.001266399 | | | |
6.32 | 2.127377102 | | | |
--------+-------------+-------+-----+-------------+
Приведенный ниже запрос я использую, но не могу получить медианное значение
while (Rec > 0)
начать
установить Id=Id+1;
если(Id=1)
начать
set Sqlqry = 'вставить в tempCal (медиана) '
набор Sqlqry = Sqlqry + ' выберите литой(функция AVG(1.0 * '+олвал+') как десятичное число(10,2)) как средний из
(Выберите isnull('+colval+',"") AAA, ra = ROW_NUMBER() OVER (ORDER BY Rating, Id ),
РД = функции row_number() над (заказ крысы, по убыванию, код по убыванию) от temptbl) как X, где РА между РД - 1 и РД + 1;'
exec(Sqlqry)
конец
выберите * из tempCal
set @Rec=@Rec-1;
конец
Patrice T
Неправильный ответ. Перечитайте еще раз мой вопрос.
IsaiSelvan
нижеприведенный результат фомата мне нужен.
ожидаемый результат:
================
--------+-------------+-------+-----+-------------+
Медиана | 2StanddDevi | количество | мин | макс выброс |
--------+-------------+-------+-----+-------------+
6.25 | 4.412270768 | | | |
5.25 | 4.110490644 | | | |
4.25 | 3.055050463 | | | |
6.32 | 0.102632029 | | | |
7.35 | 1.425342064 | | | |
7.01 | 1.32378246 | | | |
7.03 | 3.001266399 | | | |
6.32 | 2.127377102 | | | |
--------+-------------+-------+-----+-------------+
Patrice T
Каков ваш реальный результат ?
IsaiSelvan
ниже приведен формат таблицы фактического результата.
ожидаемый результат:
================
--------+-------------+-------+-----+-------------+
Медиана | 2StanddDevi | количество | мин | макс выброс |
--------+-------------+-------+-----+-------------+
6.25 | 4.412270768 | | | |
5.25 | 4.110490644 | | | |
4.25 | 3.055050463 | | | |
6.32 | 0.102632029 | | | |
7.35 | 1.425342064 | | | |
7.01 | 1.32378246 | | | |
7.03 | 3.001266399 | | | |
6.32 | 2.127377102 | | | |
--------+-------------+-------+-----+-------------+
Patrice T
Если это реальный результат, то в этом случае все работает идеально.
Поскольку не у всех есть удобный SQL-сервер, вам необходимо предоставить:
- код
- выборочные данные
- ожидаемый результат
- и реальный результат.
последняя по-прежнему отсутствует.