Duvida em como montar query

Olá pessoal. Estou com uma dúvida, na verdade, fiquei algum tempo sem desenvolver e a gente acaba esquecendo muita coisa se não praticar e minha dúvida primeiramente é em SQL … Bom, estou trabalhando em 1 projeto e tenho a seguinte situção :

Tenho 1 entity de Produto e um entity de Categoria e eu gostaria de montar uma query que me listasse os produtos mais vendidos de uma determinada categoria, o mapeamento é uma Categoria para N Produtos. Pra facilitar um pouco as coisas, na tabela de produto existe 1 campo que contêm o número de vendas, assim de cara eu já sei que o Produto X associado à Categoria Y tem N vendas. Estou usando SQL Server 2008 e se eu for usar aquelas funções de Decision Cube, tipo Rollup, Pivo e Rank, fica facil fazer, mas não gostaria de fazer dessa forma, então eu pergunto, se em SQL ansi da pra resolver isso ou tem que apelar pra alguma outra saida ? A, ja ia esquecendo, estou usando EJB 3.

Desde já agradeço

Ronaldo

seria algo assim?

seria algo assim?

Obrigado por responder, mas na verdade, essa query que voce montou, nao é exatamente o que eu preciso, na verdade eu quase consegui, é algo assim :

select p.id, p.totalvendas,  p.cat_id
from prod p
where (
   select count(pp.cat_id) from prod pp
   where p.cat_id = pp.cat_id  and p. totalvendas < pp. totalvendas
) <= 5 order by  p.cat_id, p.poll_totalvotes desc

Neste select, ele esta trazendo os 5 mais vendidos por categoria, só que eu tenho que ordenar isso de um jeito que as categorias que tem mais voto, fiquem no top, pois quero apenas as 3 primeiras categorias.

grato

Ronaldo.