IsaiSelvan Ответов: 0

Как найти медиану, 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-сервер, вам необходимо предоставить:
- код
- выборочные данные
- ожидаемый результат
- и реальный результат.
последняя по-прежнему отсутствует.

0 Ответов