sql面试题 - 找出前20%及后20%的数据

题目:有一张用户访问次数表,列名包括用户编号、用户类型、访问量。要求在剔除访问次数前20%的用户后,每类用户的平均访问次数。

问题拆解:

  1. 访问量前20%数据。
    --按照访问量降序排序后,排名小于等于全部用户的20%,即为前20%。(可以类比为年级前几名)
select 用户类型,  avg(访问量) 平均访问次数
from (
	select * 
			, row_number() over (order by 访问量 desc )  as rank
	from  input
	)
where rank >= 0.2 * ( select count(用户编号) from input )
group by 用户类型
posted @ 2023-07-20 16:51  ttttttian  阅读(584)  评论(0编辑  收藏  举报