У меня способ есть но пака не буду
Может кто нибудт более эффективный приделожит
И так есть
create table DATA (r float)
с кучей записей
Надо найти вещественное число - медиану.
Медиана в SQL
-
- Уже с Приветом
- Posts: 28294
- Joined: 29 Aug 2000 09:01
- Location: SPB --> Gloucester, MA, US --> SPB --> Paris
Медиана в SQL
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
-
- Уже с Приветом
- Posts: 2489
- Joined: 04 Feb 2002 10:01
- Location: Слава Україні!
Re: Медиана в SQL
Dmitry67 wrote:У меня способ есть но пака не буду
Может кто нибудт более эффективный приделожит
И так есть
create table DATA (r float)
с кучей записей
Надо найти вещественное число - медиану.
Если можно - уточните: что есть медиана в данной задаче с таблицей вщественных чисел?
-
- Уже с Приветом
- Posts: 28294
- Joined: 29 Aug 2000 09:01
- Location: SPB --> Gloucester, MA, US --> SPB --> Paris
-
- Уже с Приветом
- Posts: 1906
- Joined: 14 Mar 2001 10:01
Code: Select all
select max(d2.r)
from
(select top 50 percent r from DATA order by r) d2
-
- Уже с Приветом
- Posts: 2489
- Joined: 04 Feb 2002 10:01
- Location: Слава Україні!
Vovka wrote:Code: Select all
select max(d2.r)
from
(select top 50 percent r from DATA order by r) d2
Может быть 51?
-
- Уже с Приветом
- Posts: 28294
- Joined: 29 Aug 2000 09:01
- Location: SPB --> Gloucester, MA, US --> SPB --> Paris
Я использовал identity
Решение с процентами при большом числе точек более эффективное
Но вто только кто гарантирует что при нечетном числе случаев стредняя точка входит или нет ?
Может 50.000001 ?
А в YUKON даже так работает
select top ((select count(*)/2 from #d)) n from #d order by n
Решение с процентами при большом числе точек более эффективное
Но вто только кто гарантирует что при нечетном числе случаев стредняя точка входит или нет ?
Может 50.000001 ?
А в YUKON даже так работает
select top ((select count(*)/2 from #d)) n from #d order by n
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
-
- Уже с Приветом
- Posts: 1906
- Joined: 14 Mar 2001 10:01
Dmitry67 wrote:Я использовал identity
А это как? Структуру таблицы меняли, что-ли, или всё во временную таблицу? Так не честно!
Dmitry67 wrote: Но вто только кто гарантирует что при нечетном числе случаев стредняя точка входит или нет ?
Может 50.000001 ?
Фиг знает, я первое, что в голову пришло писал. Вам, датабазникам, видней.
Вот ещё вариант (не мой):
Code: Select all
select d.r
from DATA d cross join DATA i
group by d.r
having count(case when i.r <= d.r then 1 else null end ) = (count(*) + 1) / 2
[злостный и циничный оффтопик]
Dmitry67, а вот скажите мне, чтоб экзамен по MSSQL сдать (прграммерский, естессно), надо уметь всякие такие задачки решать? Или там больше про всякий BD design, normal forms, etc.?
А то вот от безделья думаю, может сертификат какой получить?
[/злостный и циничный оффтопик]
-
- Уже с Приветом
- Posts: 2107
- Joined: 04 Mar 1999 10:01
- Location: Gaithersburg, MD