我正在尝试在 mysql 中对数据进行标准分桶:将数据沿某些特征拆分为 N 个桶,并将桶号分配给每个条目。条目由日期、permno 和 volume 组成,如下所示:
dte, permno, volume, day_rank
1986-03-07, 10071, 9203, 空
该表的标题为 bam。在每个日期 (dte) 上,我想根据数量对许多 permnos (ids) 进行排名。然后,我想将每个 permno、dte 的排名分配给 day_rank。因此,成功的查询将根据容量对每个 dte 的 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 天的时间才能运行。
有任何想法吗?