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的平均值

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐