|
Медиана в запросе | ☑ | ||
---|---|---|---|---|
0
Fragster
гуру
09.10.14
✎
10:27
|
Как вычислить медиану https://ru.wikipedia.org/wiki/Медиана_(статистика) в запросе. Желательно так, чтобы не очень тормозило. Ну, или в СКД.
|
|||
1
Fragster
гуру
09.10.14
✎
10:27
|
знаки вопроса забыл :)
|
|||
2
PR
09.10.14
✎
10:29
|
(1) А мы-то уже настроились послушать :))
|
|||
3
ilyavorobyev
09.10.14
✎
10:31
|
(0) не благодари
SELECT top 1 t1.val median, avg( t2.val) average FROM t AS t1, t AS t2 GROUP BY t1.id, t1.val ORDER BY abs( sum( case when t1.val > t2.val then 1 when t1.val < t2.val then -1 else 0 end ) ) |
|||
4
ssh2QQ6
09.10.14
✎
10:46
|
Штатная возможность в АнализДанных есть, не знаю подойдет это или нет, я как то раз использовал
|
|||
5
Нуф Нуф XIX
09.10.14
✎
10:49
|
вот для нечетного количества:
ВЫБРАТЬ 5 КАК Значение ПОМЕСТИТЬ ТаблицаЗначений ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 13 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 15 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 17 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТаблицаЗначений.Значение, МАКСИМУМ(ТаблицаЗначенийДляСоединенияМаксимум.Значение) КАК ЗначениеСнизу, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ТаблицаЗначенийДляСоединенияМаксимум.Значение) КАК КоличествоСнизу, МИНИМУМ(ТаблицаЗначенийДляСоединенияМинимум.Значение) КАК ЗначениеСверху, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ТаблицаЗначенийДляСоединенияМинимум.Значение) КАК КоличествоСверху ПОМЕСТИТЬ ИтоговаяТаблица ИЗ ТаблицаЗначений КАК ТаблицаЗначений ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаЗначений КАК ТаблицаЗначенийДляСоединенияМинимум ПО ТаблицаЗначений.Значение < ТаблицаЗначенийДляСоединенияМинимум.Значение ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаЗначений КАК ТаблицаЗначенийДляСоединенияМаксимум ПО ТаблицаЗначений.Значение > ТаблицаЗначенийДляСоединенияМаксимум.Значение СГРУППИРОВАТЬ ПО ТаблицаЗначений.Значение ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ИтоговаяТаблица.Значение, (ИтоговаяТаблица.ЗначениеСнизу + ИтоговаяТаблица.ЗначениеСверху) / 2 КАК Поле1 ИЗ ИтоговаяТаблица КАК ИтоговаяТаблица ГДЕ ИтоговаяТаблица.КоличествоСнизу = ИтоговаяТаблица.КоличествоСверху |
|||
6
Fragster
гуру
09.10.14
✎
13:42
|
(3)(5) "Желательно так, чтобы не очень тормозило"
|
|||
7
Fragster
гуру
09.10.14
✎
13:45
|
к тому же (5) не работает (для примера результат 13, а вот когда добавляем много восьмерок в выборку так, чтобы оно должно бы стать 8 - не работает)
|
|||
8
ilyavorobyev
09.10.14
✎
13:56
|
(7) чем тебя (3) не устраивает?
|
|||
9
Fragster
гуру
09.10.14
✎
13:58
|
(8) в 1се не совсем работает
|
|||
10
Fragster
гуру
09.10.14
✎
13:59
|
(9)+ список должен быть пронумерован
|
|||
11
ilyavorobyev
09.10.14
✎
14:00
|
(9) найди функции такие же в 1с, перепиши его под 1с и все
|
|||
12
Крошка Ру
09.10.14
✎
14:02
|
(10) Ну и в чем проблема? Нумеруй и находи медиану. Как пронумеровать строки в запросе - на мисте есть статья.
|
|||
13
Fragster
гуру
09.10.14
✎
14:04
|
(12) там нет как пронумеровать с одинаковыми значениями ;)
|
|||
14
Fragster
гуру
09.10.14
✎
14:04
|
в смысле вот данные: 1,1,1,1,1,10, нумеруй. а медиана тут 1
|
|||
15
vi0
09.10.14
✎
14:09
|
кто где на практике используете это? расскажите
|
|||
16
Fragster
гуру
09.10.14
✎
14:11
|
(15) пир ненормальном распределении лучше использовать ее, чем мат ожидание для прогнозирования
|
|||
17
Крошка Ру
09.10.14
✎
14:39
|
(16) Не спрашивай как это работает:
ВЫБРАТЬ Таблица.Значение КАК Значение ПОМЕСТИТЬ ВТ_Таблица ИЗ Таблица КАК Таблица ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_Таблица.Значение, СУММА(1) КАК КоличествоЭлементов ПОМЕСТИТЬ ВТ_ТаблицаКоличество ИЗ ВТ_Таблица КАК ВТ_Таблица СГРУППИРОВАТЬ ПО ВТ_Таблица.Значение ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_ТаблицаКоличество.Значение, ВТ_ТаблицаКоличество.КоличествоЭлементов, ВЫБОР КОГДА ВТ_ТаблицаКоличество.Значение > ВТ_ТаблицаКоличество1.Значение ТОГДА 1 КОГДА ВТ_ТаблицаКоличество.Значение < ВТ_ТаблицаКоличество1.Значение ТОГДА -1 ИНАЧЕ 0 КОНЕЦ КАК ОтносительноеПоложение ПОМЕСТИТЬ ВТ_ТаблицаПоложение ИЗ ВТ_ТаблицаКоличество КАК ВТ_ТаблицаКоличество, ВТ_ТаблицаКоличество КАК ВТ_ТаблицаКоличество1 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПЕРВЫЕ 1 ВТ_ТаблицаПоложение.Значение, ВТ_ТаблицаПоложение.КоличествоЭлементов ПОМЕСТИТЬ ВТ_ТаблицаМиниМакс ИЗ ВТ_ТаблицаПоложение КАК ВТ_ТаблицаПоложение ГДЕ ВТ_ТаблицаПоложение.ОтносительноеПоложение >= 0 УПОРЯДОЧИТЬ ПО ВТ_ТаблицаПоложение.ОтносительноеПоложение ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПЕРВЫЕ 1 ВТ_ТаблицаПоложение.Значение, ВТ_ТаблицаПоложение.КоличествоЭлементов ПОМЕСТИТЬ ВТ_ТаблицаМаксиМин ИЗ ВТ_ТаблицаПоложение КАК ВТ_ТаблицаПоложение ГДЕ ВТ_ТаблицаПоложение.ОтносительноеПоложение <= 0 УПОРЯДОЧИТЬ ПО ВТ_ТаблицаПоложение.ОтносительноеПоложение УБЫВ ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВЫБОР КОГДА ВТ_ТаблицаМаксиМин.КоличествоЭлементов > ВТ_ТаблицаМиниМакс.КоличествоЭлементов ТОГДА ВТ_ТаблицаМаксиМин.Значение КОГДА ВТ_ТаблицаМаксиМин.КоличествоЭлементов < ВТ_ТаблицаМиниМакс.КоличествоЭлементов ТОГДА ВТ_ТаблицаМиниМакс.Значение ИНАЧЕ (ВТ_ТаблицаМаксиМин.КоличествоЭлементов + ВТ_ТаблицаМиниМакс.КоличествоЭлементов) / 2 КОНЕЦ КАК Медиана ИЗ ВТ_ТаблицаМиниМакс КАК ВТ_ТаблицаМиниМакс, ВТ_ТаблицаМаксиМин КАК ВТ_ТаблицаМаксиМин |
|||
18
Крошка Ру
09.10.14
✎
14:45
|
Поправочка:
ВЫБРАТЬ Таблица.Значение КАК Значение ПОМЕСТИТЬ ВТ_Таблица ИЗ &Таблица КАК Таблица ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_Таблица.Значение, СУММА(1) КАК КоличествоЭлементов ПОМЕСТИТЬ ВТ_ТаблицаКоличество ИЗ ВТ_Таблица КАК ВТ_Таблица СГРУППИРОВАТЬ ПО ВТ_Таблица.Значение ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_Таблица.Значение, ВЫБОР КОГДА ВТ_Таблица.Значение > ВТ_Таблица1.Значение ТОГДА 1 КОГДА ВТ_Таблица.Значение < ВТ_Таблица1.Значение ТОГДА -1 ИНАЧЕ 0 КОНЕЦ КАК ОтносительноеПоложение, ВТ_ТаблицаКоличество.КоличествоЭлементов ПОМЕСТИТЬ ВТ_ТаблицаПоложение ИЗ ВТ_Таблица КАК ВТ_Таблица ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ТаблицаКоличество КАК ВТ_ТаблицаКоличество ПО ВТ_Таблица.Значение = ВТ_ТаблицаКоличество.Значение, ВТ_Таблица КАК ВТ_Таблица1 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПЕРВЫЕ 1 ВТ_ТаблицаПоложение.Значение, ВТ_ТаблицаПоложение.КоличествоЭлементов ПОМЕСТИТЬ ВТ_ТаблицаМиниМакс ИЗ ВТ_ТаблицаПоложение КАК ВТ_ТаблицаПоложение ГДЕ ВТ_ТаблицаПоложение.ОтносительноеПоложение >= 0 УПОРЯДОЧИТЬ ПО ВТ_ТаблицаПоложение.ОтносительноеПоложение ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПЕРВЫЕ 1 ВТ_ТаблицаПоложение.Значение, ВТ_ТаблицаПоложение.КоличествоЭлементов ПОМЕСТИТЬ ВТ_ТаблицаМаксиМин ИЗ ВТ_ТаблицаПоложение КАК ВТ_ТаблицаПоложение ГДЕ ВТ_ТаблицаПоложение.ОтносительноеПоложение <= 0 УПОРЯДОЧИТЬ ПО ВТ_ТаблицаПоложение.ОтносительноеПоложение УБЫВ ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВЫБОР КОГДА ВТ_ТаблицаМаксиМин.КоличествоЭлементов > ВТ_ТаблицаМиниМакс.КоличествоЭлементов ТОГДА ВТ_ТаблицаМаксиМин.Значение КОГДА ВТ_ТаблицаМаксиМин.КоличествоЭлементов < ВТ_ТаблицаМиниМакс.КоличествоЭлементов ТОГДА ВТ_ТаблицаМиниМакс.Значение ИНАЧЕ (ВТ_ТаблицаМаксиМин.Значение + ВТ_ТаблицаМиниМакс.Значение) / 2 КОНЕЦ КАК Медиана ИЗ ВТ_ТаблицаМиниМакс КАК ВТ_ТаблицаМиниМакс, ВТ_ТаблицаМаксиМин КАК ВТ_ТаблицаМаксиМин |
|||
19
МихаилМ
09.10.14
✎
14:47
|
медиану можно рассчитать
в анализ данных |
|||
20
Крошка Ру
09.10.14
✎
14:48
|
Да что ж такое!
ВЫБРАТЬ Таблица.Значение КАК Значение ПОМЕСТИТЬ ВТ_Таблица ИЗ &Таблица КАК Таблица ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_Таблица.Значение, СУММА(1) КАК КоличествоЭлементов ПОМЕСТИТЬ ВТ_ТаблицаКоличество ИЗ ВТ_Таблица КАК ВТ_Таблица СГРУППИРОВАТЬ ПО ВТ_Таблица.Значение ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_Таблица.Значение, СУММА(ВЫБОР КОГДА ВТ_Таблица.Значение > ВТ_Таблица1.Значение ТОГДА 1 КОГДА ВТ_Таблица.Значение < ВТ_Таблица1.Значение ТОГДА -1 ИНАЧЕ 0 КОНЕЦ) КАК ОтносительноеПоложение, ВТ_ТаблицаКоличество.КоличествоЭлементов ПОМЕСТИТЬ ВТ_ТаблицаПоложение ИЗ ВТ_Таблица КАК ВТ_Таблица ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ТаблицаКоличество КАК ВТ_ТаблицаКоличество ПО ВТ_Таблица.Значение = ВТ_ТаблицаКоличество.Значение, ВТ_Таблица КАК ВТ_Таблица1 СГРУППИРОВАТЬ ПО ВТ_Таблица.Значение, ВТ_ТаблицаКоличество.КоличествоЭлементов ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПЕРВЫЕ 1 ВТ_ТаблицаПоложение.Значение, ВТ_ТаблицаПоложение.КоличествоЭлементов ПОМЕСТИТЬ ВТ_ТаблицаМиниМакс ИЗ ВТ_ТаблицаПоложение КАК ВТ_ТаблицаПоложение ГДЕ ВТ_ТаблицаПоложение.ОтносительноеПоложение >= 0 УПОРЯДОЧИТЬ ПО ВТ_ТаблицаПоложение.ОтносительноеПоложение ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПЕРВЫЕ 1 ВТ_ТаблицаПоложение.Значение, ВТ_ТаблицаПоложение.КоличествоЭлементов ПОМЕСТИТЬ ВТ_ТаблицаМаксиМин ИЗ ВТ_ТаблицаПоложение КАК ВТ_ТаблицаПоложение ГДЕ ВТ_ТаблицаПоложение.ОтносительноеПоложение <= 0 УПОРЯДОЧИТЬ ПО ВТ_ТаблицаПоложение.ОтносительноеПоложение УБЫВ ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВЫБОР КОГДА ВТ_ТаблицаМаксиМин.КоличествоЭлементов > ВТ_ТаблицаМиниМакс.КоличествоЭлементов ТОГДА ВТ_ТаблицаМаксиМин.Значение КОГДА ВТ_ТаблицаМаксиМин.КоличествоЭлементов < ВТ_ТаблицаМиниМакс.КоличествоЭлементов ТОГДА ВТ_ТаблицаМиниМакс.Значение ИНАЧЕ (ВТ_ТаблицаМаксиМин.Значение + ВТ_ТаблицаМиниМакс.Значение) / 2 КОНЕЦ КАК Медиана ИЗ ВТ_ТаблицаМиниМакс КАК ВТ_ТаблицаМиниМакс, ВТ_ТаблицаМаксиМин КАК ВТ_ТаблицаМаксиМин |
|||
21
Крошка Ру
09.10.14
✎
15:25
|
Медиана в запросе 2.0:
ВЫБРАТЬ Таблица.Значение КАК Значение ПОМЕСТИТЬ ВТ_Таблица ИЗ &Таблица КАК Таблица ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_Таблица.Значение, СУММА(1) КАК КоличествоЭлементов ПОМЕСТИТЬ ВТ_ТаблицаКоличество ИЗ ВТ_Таблица КАК ВТ_Таблица СГРУППИРОВАТЬ ПО ВТ_Таблица.Значение ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_Таблица.Значение, СУММА(ВЫБОР КОГДА ВТ_Таблица.Значение > ВТ_Таблица1.Значение ТОГДА 1 ИНАЧЕ 0 КОНЕЦ) КАК КоличествоЭлементовМеньше, СУММА(ВЫБОР КОГДА ВТ_Таблица.Значение < ВТ_Таблица1.Значение ТОГДА 1 ИНАЧЕ 0 КОНЕЦ) КАК КоличествоЭлементовБольше, ВТ_ТаблицаКоличество.КоличествоЭлементов ПОМЕСТИТЬ ВТ_ТаблицаОтносительноеПоложение ИЗ ВТ_Таблица КАК ВТ_Таблица ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ТаблицаКоличество КАК ВТ_ТаблицаКоличество ПО ВТ_Таблица.Значение = ВТ_ТаблицаКоличество.Значение, ВТ_Таблица КАК ВТ_Таблица1 СГРУППИРОВАТЬ ПО ВТ_Таблица.Значение, ВТ_ТаблицаКоличество.КоличествоЭлементов ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_ТаблицаОтносительноеПоложение.Значение, ВТ_ТаблицаОтносительноеПоложение.КоличествоЭлементовМеньше / ВТ_ТаблицаОтносительноеПоложение.КоличествоЭлементов КАК КоличествоЭлементовМеньше, ВТ_ТаблицаОтносительноеПоложение.КоличествоЭлементовБольше / ВТ_ТаблицаОтносительноеПоложение.КоличествоЭлементов КАК КоличествоЭлементовБольше, ВТ_ТаблицаОтносительноеПоложение.КоличествоЭлементов ПОМЕСТИТЬ ВТ_ТаблицаСгруппированноеПоложение ИЗ ВТ_ТаблицаОтносительноеПоложение КАК ВТ_ТаблицаОтносительноеПоложение ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ СРЕДНЕЕ(ВТ_ТаблицаСгруппированноеПоложение.Значение) КАК Значение ИЗ ВТ_ТаблицаСгруппированноеПоложение КАК ВТ_ТаблицаСгруппированноеПоложение ГДЕ ВТ_ТаблицаСгруппированноеПоложение.КоличествоЭлементов + ВТ_ТаблицаСгруппированноеПоложение.КоличествоЭлементовМеньше >= ВТ_ТаблицаСгруппированноеПоложение.КоличествоЭлементовБольше И ВТ_ТаблицаСгруппированноеПоложение.КоличествоЭлементов + ВТ_ТаблицаСгруппированноеПоложение.КоличествоЭлементовБольше >= ВТ_ТаблицаСгруппированноеПоложение.КоличествоЭлементовМеньше |
|||
22
Fragster
гуру
09.10.14
✎
16:36
|
ВЫБРАТЬ
1 КАК Зн ПОМЕСТИТЬ Т ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВЫРАЗИТЬ(КОЛИЧЕСТВО(Т.Зн) / 2 КАК ЧИСЛО(10, 0)) КАК КолТ_Мин, ВЫРАЗИТЬ((КОЛИЧЕСТВО(Т.Зн) + 1) / 2 КАК ЧИСЛО(10, 0)) КАК КолТ_Макс ПОМЕСТИТЬ КолТ ИЗ Т КАК Т ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Т.Зн, СУММА(1) КАК КолЗн ПОМЕСТИТЬ КолЗн ИЗ Т КАК Т СГРУППИРОВАТЬ ПО Т.Зн ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ КолЗн1.Зн, СУММА(КолЗн2.КолЗн) КАК КолЗн ПОМЕСТИТЬ Данные ИЗ КолЗн КАК КолЗн1 ЛЕВОЕ СОЕДИНЕНИЕ КолЗн КАК КолЗн2 ПО КолЗн1.Зн >= КолЗн2.Зн СГРУППИРОВАТЬ ПО КолЗн1.Зн ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ СРЕДНЕЕ(Вложенный.Зн) КАК Зн ИЗ (ВЫБРАТЬ ПЕРВЫЕ 1 Данные.Зн КАК Зн ИЗ Данные КАК Данные ВНУТРЕННЕЕ СОЕДИНЕНИЕ КолТ КАК КолТ ПО Данные.КолЗн >= КолТ.КолТ_Мин ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ПЕРВЫЕ 1 Данные.Зн ИЗ Данные КАК Данные ВНУТРЕННЕЕ СОЕДИНЕНИЕ КолТ КАК КолТ ПО Данные.КолЗн >= КолТ.КолТ_Макс) КАК Вложенный |
|||
23
ILM
гуру
09.10.14
✎
17:35
|
Мужики. Запросами меряются )))
Мое мнение, что среднее, что медиана, что Гаусс, всё плохо для прогнозов, а в нашей стране и подавно. SDBR наше всё. |
|||
24
Крошка Ру
09.10.14
✎
17:42
|
(23) Правда красивые?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |