我正在尝试在mysql中对数据进行标准分段:将数据沿某些特征分成N个桶并将桶号分配给每个条目。条目包括日期,permno和音量,如下所示:
dte,permno,volume,day_rank
1986-03-07,10071,9203,NULL
该表名为bam。在每个日期(dte),有许多permnos(id)我想根据音量排名。然后我想为每个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天。
有什么想法吗?