select * from group_avg_test;

select groupId,avg(value) from (
select groupId,value from (
select groupId, value,@num := if(@currGroupId = groupId, @num + 1, 1) as row_number,
@currGroupId := groupId from(select @num := 0, @currGroupId := '') as i,
group_avg_test order by groupId, value desc
) as r where r.row_number <= 2
) as t group by groupId;

这样就求出了每个组前2个最大的value的平均值
这篇博客详细介绍了如何使用SQL查询语句,从数据表中获取每个组内前两个最大值的平均值。通过嵌套查询和变量赋值,实现了对groupId分组并按value降序排列,从而提取每组的最大值并计算平均值。
2398

被折叠的 条评论
为什么被折叠?



