Есть таблица:
id,name,otdel,money
-----------------
1,alex,it,1000
2,anna,callcenter,2000
3,anton,it,3000
итд.
Нужно выбрать из каждого отдела топ5 сотрудников с наибольшей зарплатой.
Для одной группы я могу составить запрос select * from users group by otdel ordeer by money asc limit 3 или как-то так..
Напишите плз запрос с пояснением, а то в интернете я встречал решения таких задач, но осмыслить это не получилось..
Как-то так, видимо:
select u.* from users as u
where u.id in (select top 5 id from users as u1 where u1.otdel=u.otdel order by u1.money desc)
order by u.otdel, u.money desc
romy4: Почему, собственно?
Протестировать сейчас не могу, но запрос должен вернуть топ 5 зарплат в каждом отделе. Я так понял вопрос. Работать будет, конечно не быстро, но если таблица не большая, то почему бы и нет.