将第N个值提取为组的一部分或组内

时间:2014-02-04 08:12:42

标签: mysql sql percentile top-n

我有一张大表(数百万条记录),看起来像这样。我需要每天获得前30%(或第70百分位数)。所以结果应该看起来像节表。该表已按升序排序Bread_Dateconsumption_per_eater值已按降序排序。

我理解这与前N问题类似,我可能需要将其作为select语句的一部分来编写:

  

if(@preBread_Date为null或@preBread_Date!= Bread_Date,@ row:= 1,   @row:= @ row + 1)为'row',@ preBread_Date:= Bread_Date

但我被困住了。我不知道写什么因为每天都有不同数量的记录。因此在下面的示例中,2012-07-10只有3条记录,而2012-07-11有6条不同的记录,2012-07有4条记录。我想避免的一件事是任何加入。

如果有人能告诉我接下来需要写的查询,真的很感激。提前谢谢。


Bread_Date | Consumption_Per_Eater
.................................................. ....................
2012-07-10 | 300.1
2012-07-10 | 290.9
2012-07-10 | 230.5
2012-07-11 | 230.3
2012-07-11 | 340.1
2012-07-11 | 330.9
2012-07-11 | 230.5
2012-07-11 | 210.3
2012-07-11 | 209.4
2012-07-12 | 400.9
2012-07-12 | 300.5
2012-07-12 | 210.3
2012-07-12 | 200.4



Bread_Date | Top_30%_of_that_day
.................................................. ............................
2012-07-10 | XXXXXXX
2012-07-11 | XXXXXXX
2012-07-12 | XXXXXXX

0 个答案:

没有答案