ведро данных в ntiles, MySQL - PullRequest
       24

ведро данных в ntiles, MySQL

1 голос
/ 25 ноября 2011

Я пытаюсь выполнить стандартное группирование данных в mysql: разбить данные по некоторой характеристике на N сегментов и назначить номер блока для каждой записи. Записи состоят из даты, permno и объема следующим образом:

dte, permno, volume, day_rank

1986-03-07, 10071, 9203, NULL

Таблица называется БАМ. На каждую дату (dte) есть много permnos (идентификаторов), которые я хотел бы ранжировать на основе объема. Затем я хотел бы назначить рейтинг для каждого permno, dte для day_rank. Таким образом, успешный запрос будет ранжировать значения permnos для каждой точки на основе объема. Я пытаюсь сделать это с помощью этого запутанного запроса:

 select a.dte, a.permno, count(b.volume) as rnk
 from bam a inner join bam b
 on a.dte = b.dte and (a.volume < b.volume or (a.permno=b.permno and a.volume =      b.volume))
 order by a.dte, a.volume;

Это работает, однако это очень и очень медленно до такой степени, что для таблицы, которая имеет разумный размер, потребуется ~ 1 день для запуска.

Есть идеи?

...