select emp_id, custom_id, sum from ( select emp_id, custom_id, sum(money) as sum from orders group by emp_id, custom_id ) as o1 where ( select count(distinct o2.emp_id, o2.custom_id) from ( select emp_id, custom_id, sum(money) as sum from orders group by emp_id, custom_id ) as o2 where o2.emp_id = o1.emp_id and o2.sum > o1.sum ) < 10 group by emp_id, custom_id order by emp_id, sum; 这个使用派生表进行然后取每个业务员的 top10 应该满足你的需求 @mmdsun