select 	area,
		e_id,
		e_name,
		ranking
from (
	select 	area,
			e_id,
			e_name,
			row_number() over(partition by area order by b_num desc) as ranking
	from (
		select 	e.area, 
				e.e_id, 
				e.e_name,
				count(distinct b_id) as b_num
		from employee_info e 
		join bill_info b 
			on e.e_id = b.e_id
			and month(b.date) = 8
		group by e.area, e.e_id, e.e_name
	) a
) b
where ranking between 10 and 20
;