我有一个名为 PEOPLE
的表,其中包含以下数据:
MYNAME AGE MYDATE
==========================
MARIO 20 2015/02/03
MARIA 10 2015/02/02
PEDRO 40 2015/02/01
JUAN 15 2015/01/03
PEPE 20 2015/01/02
JULIA 30 2015/01/01
JUANI 50 2014/02/03
MARTIN 10 2014/02/03
NASH 21 2014/02/03
然后我想获得按 MYDATE
降序排列的 3 人一组的平均年龄。
我的意思是,我正在寻找的结果类似于:
23,3
21,6
27
23,3
是年龄的平均值:
MARIO 20 2015/02/03
MARIA 10 2015/02/02
PEDRO 40 2015/02/01
21,6
是年龄的平均值:
JUAN 15 2015/01/03
PEPE 20 2015/01/02
JULIA 30 2015/01/01
27
是年龄的平均值:
JUANI 50 2014/02/03
MARTIN 10 2014/02/03
NASH 21 2014/02/03
我该如何处理?我知道如何使用 GROUP BY
但只能针对表的特定字段进行分组。
最佳答案
SQL 表本质上是无序的,因此我假设您希望按 mydate
降序排序。您可以使用变量枚举行,使用算术定义组,然后获取平均值:
select avg(age)
from (select t.*, (@rn := @rn + 1) as seqnum
from table t cross join
(select @rn := 0) vars
order by mydate desc
) t
group by floor((seqnum - 1) / 3);
关于mysql - 如何以 N 行为一组进行 GROUP BY?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28298862/