Mysql 作为组的一部分或在组内提取第N个值

Mysql 作为组的一部分或在组内提取第N个值,mysql,sql,percentile,top-n,Mysql,Sql,Percentile,Top N,我有一个大表(数百万条记录),看起来像这样。我需要每天获得前30%(或第70百分位)。因此,结果应该类似于截面表。该表已将面包日期按升序排序,而每位食用者的消费量值已按降序排序 我知道这类似于top-N问题,我可能需要将其作为select语句的一部分编写: 如果(@preBread_Date为空或@preBread_Date!=Bread_Date,@row:=1, @行:=@row+1)作为“行”,@preBread\u日期:=Bread\u日期 但是我被卡住了。我不知道该写什么,因为每天都有

我有一个大表(数百万条记录),看起来像这样。我需要每天获得前30%(或第70百分位)。因此,结果应该类似于截面表。该表已将
面包日期
按升序排序,而
每位食用者的消费量
值已按降序排序

我知道这类似于top-N问题,我可能需要将其作为
select
语句的一部分编写:

如果(@preBread_Date为空或@preBread_Date!=Bread_Date,@row:=1, @行:=@row+1)作为“行”,@preBread\u日期:=Bread\u日期

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

如果有人能告诉我下一步要写的问题,我将不胜感激。提前谢谢


面包|日期|每位食用者的消费量|
......................................................................
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



面包日当天最多30%
..............................................................................
2012-07-10 | XXXXXXX
2012-07-11 | XXXXXXX

2012-07-12 | XXXXXXX

你想要每天最高的30%吗?还是每天总消费量的前30%?我需要每个食客每天消费量的前30%。因此,对于2012-07-10,它应该从当天对应的值(300.1290.9230.5)中获得前30%的值。然后每一天都要重复这个问题。@gohn67请参阅原始问题帖子中我的第二个表格。一个问题,是否不可能单独计算每天的数据并将其存储在另一个表格中?似乎数据不会更改,因为您只获得新数据。@Gohn67正确,我不允许/不可能单独计算每天的数据。我拥有的查询接口不允许我使用mySQL“create”命令。