Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Медиана, боян? / 15 сообщений из 15, страница 1 из 1
23.05.2019, 18:46
    #39817315
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медиана, боян?
Подскажите запрос. Есть табличка с цифрами 1,2,3,4,5,6,7,8,9,10,11,12. Нужно по медиане выдать соседей, 3 слева, 3 справа. Медиана, к примеру 7, результат 4,5,6,7,8,9,10. И второй запрос, от медианы нужно выбрать соседей, сумма чиcел которых не превышала определенного значения, например 20, результат, 5,6,7,8.

SQL 2017.
...
Рейтинг: 0 / 0
23.05.2019, 19:47
    #39817337
WarAnt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медиана, боян?
Relic Hunter,

row_number() between row_number()/2 - 3 and row_number()/2 + 3
...
Рейтинг: 0 / 0
23.05.2019, 20:02
    #39817345
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медиана, боян?
WarAnt,

это завернутый селект да еще и с юнион? такое себе.
...
Рейтинг: 0 / 0
23.05.2019, 20:04
    #39817347
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медиана, боян?
Relic HunterWarAnt,

это завернутый селект да еще и с юнион? такое себе.Огласите криерии вашего фен-шуя.
...
Рейтинг: 0 / 0
23.05.2019, 20:24
    #39817349
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медиана, боян?
Гавриленко Сергей АлексеевичRelic HunterWarAnt,

это завернутый селект да еще и с юнион? такое себе.Огласите криерии вашего фен-шуя.публикуйте, феншуй подождет.
...
Рейтинг: 0 / 0
23.05.2019, 20:47
    #39817359
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медиана, боян?
Relic Hunter,

Sql давно медиану так считает
...
Рейтинг: 0 / 0
23.05.2019, 21:04
    #39817365
vikkiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медиана, боян?
для навигации в пространстве набора для median - без сортировки/order и счёта/count не обойтись,
отдельное дело - что другие решения под этот вопрос более оптимизированы,
для Intel процессоров есть специальные Си-шные библиотеки (MKL) отлично заточенные
именно расчёты задач векторной/линейной алгебры, можешь при желании написать Assemby
(не говоря даже о специализированных под это дело процессорах с оптимизированной архитектурой/набором команд)

частью той-же SQL Server экосистемы является Machine Learning Services (R или Python)..
в общем если вдруг количество такого рода задач довольно большое (в общеей доле от SQL расчётов)
- то можно попробовать перенаправить нагрузку туда (R например), и сравнить результаты по производительности
...
Рейтинг: 0 / 0
23.05.2019, 22:13
    #39817373
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медиана, боян?
А что по второму запросу? Активнее товарищи.Relic HunterИ второй запрос, от медианы нужно выбрать соседей, сумма чиcел которых не превышала определенного значения, например 20, результат, 5,6,7,8.

SQL 2017.
...
Рейтинг: 0 / 0
23.05.2019, 22:30
    #39817383
vikkiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медиана, боян?
Relic Hunter,

там целая сеть проверок в алгоритме,
если нечётное то в середине может быть число >20 изначально
затем в сумме с одной стороной давать >20 а с другой всё ещё <20 ,
т.е. нужно пошагово проверять оба конца (кстати в задаче не говорится как выбирать соседей,
можно и сначала один хвост во всю глубину до нужного максимума,
а потом если кончилось то в другой, или по равноудалённости, что логичнее)

если count() чётное - то опять разветление сценариев / возможных исходов: (схожее с предыдущим) с лева <=20 с права >20,
т.е. при наборе до константы-ограничения нужно проверять в какой-то приоритетности
(если любое: слева/справа <=20 и любое второе уже >20)
{брать меньшее если сумма >20}, если сумма <=20 то оба..
в общем пошагово уходить в глубину через iterations (можно с maxrecursion)

в общем действительно боль по производительности..
...
Рейтинг: 0 / 0
23.05.2019, 22:44
    #39817390
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медиана, боян?
YouTube Video
...
Рейтинг: 0 / 0
23.05.2019, 22:49
    #39817391
vikkiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медиана, боян?
iap,

там нет вероятностей/неопределённостей
(ну может только какой хвост проверять первым: левый/правый),
только жестко прописанные правила, по факту дерево решений.
...
Рейтинг: 0 / 0
24.05.2019, 09:14
    #39817469
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медиана, боян?
vikkiviap,

там нет вероятностей/неопределённостей
(ну может только какой хвост проверять первым: левый/правый),
только жестко прописанные правила, по факту дерево решений.Что? Вы посмотрели?
Метод с ранжированием переделывается для вас на раз-два.
Причём здесь вообще вероятность или неопределённость?
...
Рейтинг: 0 / 0
24.05.2019, 10:12
    #39817529
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медиана, боян?
Relic HunterНужно по медиане выдать соседей, 3 слева, 3 справа.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
declare @t table (v float)
insert into @t values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12)--,(13)

--
declare @cnt int=3;

select top (2*@cnt) with ties
	v
	--,abs((count(*)over()+1)/2.0 - row_number()over(order by v)) 
from @t 
order by abs((count(*)over()+1)/2.0 - row_number()over(order by v))
...
Рейтинг: 0 / 0
24.05.2019, 18:20
    #39817959
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медиана, боян?
court,

запрос хорош, но какое отношение это имеет к вопросу?
...
Рейтинг: 0 / 0
27.05.2019, 10:05
    #39818618
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медиана, боян?
Relic Huntercourt,

запрос хорош, но какое отношение это имеет к вопросу?эээ ...
Relic HunterНужно по медиане выдать соседей, 3 слева, 3 справа.
Это твои слова ?
Вот запрос именно это и делает.
Несогласен ?
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Медиана, боян? / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]