sql面试题:有一张操作表operate_info,筛选出每地区每天前10用户的所有操作记录 

有张记录表operate_info,筛选出每地区每天前10用户的所有操作记录 

表信息:operate_info(userid,region,operate_time,create_time,p_day)

求sql怎么写

是限定只能用一条 sql 实现?


SELECT
	* 
FROM
	operate_info op1 
WHERE
	op1.userid IN (
	SELECT
		t.userid 
	FROM
		(
		SELECT
			op2.userid 
		FROM
			operate_info op2 
		WHERE
			DATE( op1.operate_time ) = DATE( op2.operate_time ) 
			AND op1.region = op2.region 
		GROUP BY
			op2.userid 
		ORDER BY
			COUNT( op2.userid ) DESC 
			LIMIT 3
		) t 
	)

里面的 LIMIT 就是前多少名,你改成 10 后试试呢。我这里测上去没啥问题