Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2013, 13:26   #1
BioVR
Пользователь
 
Регистрация: 21.02.2011
Сообщений: 18
По умолчанию Расчет моды (статистика)

Всем доброго дня!
Нужна помощь в альтернативном расчете статистического показателя МОДА.
Модой является наиболее часто встречаемое значение. Т.е. для того, чтобы получить расчет моды (например цены), нужно посчитать какое количество раз встречается какая цена и выбрать наиболее часто встречаемую цену (количество = максимальное).
Все бы хорошо, но когда в таблице более 3.000.000 строк, и вариаций группировок, в рамках которых можно сделать расчет более 1000, то возникает проблема скорости такого расчета - расчет может длится до 10-15 минут, что очень долго для отчетов.

Кто сталкивался с такой проблемой? Есть ли какие то альтернативные методы расчета?
BioVR вне форума Ответить с цитированием
Старый 15.04.2013, 13:32   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Ну а так
Код:
SELECT Cena,COUNT(*) 
  FROM MyTable
  GROUP BY Cena
  ORDER BY 2 DESC
Цитата:
и вариаций группировок, в рамках которых можно сделать расчет более 1000
тут подробней, не понял. Возможно группировочные ключи тоже в GROUP BY засунуть. Да и в данном случае по цене не плохо индекс иметь
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 15.04.2013 в 13:37.
Аватар вне форума Ответить с цитированием
Старый 15.04.2013, 13:50   #3
BioVR
Пользователь
 
Регистрация: 21.02.2011
Сообщений: 18
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Ну а так
Код:
SELECT Cena,COUNT(*) 
  FROM MyTable
  GROUP BY Cena
  ORDER BY 2 DESC
тут подробней, не понял. Возможно группировочные ключи тоже в GROUP BY засунуть. Да и в данном случае по цене не плохо индекс иметь
Как раз речь о группировке, получается она может быть как с одним параметром, например ORDER BY [Федеральный округ], так и с несколькими уровнями группировки (до 10 на самом деле, я ошибся про 1000 - это уже вариативность фильтров к данным).

Указанный Вами подсчет стандартен, как раз вот он и съедает время.
Получается, что сначала считаем количество цен, потом возвращаем значение цены, у которой количество максимальное.
BioVR вне форума Ответить с цитированием
Старый 15.04.2013, 13:59   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Стандартный, других и нет. Вернее по другому еще хуже будет. А что бы не возвращать все записи использовать TOP, LIMIT или иное, но это уже от конкретной СУБД зависит
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 15.04.2013, 15:39   #5
BioVR
Пользователь
 
Регистрация: 21.02.2011
Сообщений: 18
По умолчанию

Спасибо за комментарии.
Видимо придется в несколько шагов уменьшать массив и дальше делать по стандарту.
Жаль конечно, что нет какой готовой функции, а то больно много ресурсов уходит.
BioVR вне форума Ответить с цитированием
Старый 15.04.2013, 15:53   #6
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

вы просто не так что-то делаете.
eval вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нахождение моды Logannn Общие вопросы C/C++ 15 16.01.2013 23:11
Поиск моды среди неизвестного кол-ва положительных чисел. c++ Trigger man Помощь студентам 1 27.08.2012 19:24
Нахождение моды в массиве. Maksimall89 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 15.11.2011 20:00
моды и карты к half-life alhon Gamedev - cоздание игр: Unity, OpenGL, DirectX 14 05.10.2009 14:12