AGRUPAR E TRAZER NÚMERO LIMITADOS POR GRUPOS

SQL Server

31/10/2017

Olá,

Tenho a seguinte questão:
Em uma tabela com os campos: nome, telefone, bairro.
preciso que a query me retorne 5 pessoas de cada bairro.

Obrigado pela ajuda.
José Menezes

José Menezes

Curtidas 0

Respostas

Allan Monteiro

Allan Monteiro

31/10/2017

Será que assim dá certo? Rs

SELECT
A.NOME,
A.TELEFONE,
A.BAIRRO,
COUNT(A.BAIRRO)

FROM TABELA A

GROUP BY A.NOME,
A.TELEFONE,
A.BAIRRO

HAVING COUNT(A.BAIRRO) = 5;
GOSTEI 0
José Menezes

José Menezes

31/10/2017

Não. desta forma trouxe apenas as mesmas pessoas que moram em 5 bairros diferentes (rs). Eu preciso que me traga cinco pessoas, independente da ordem, pode ser por nome mesmo, mas quero quero cinco pessoas de TODOS os bairros. Assim, se eu tiver 10 bairros, a consulta tem que me retornar 50 pessoas.
GOSTEI 0
Paulo Santos

Paulo Santos

31/10/2017

Bom dia José, pelo tempo que postou a duvida acredito que já tenha conseguido solucionar.
Mas segue um exemplo.

Pelo que entendi, vc precisa de no máximo 5 pessoas de cada bairro que estão cadastras na mesma tabela, correto?
Se for esse o caso esse exemplo vai te retornar o que precisa, mas se for de tabelas distintas basta alterar a consulta dentro do outer apply que vai funcionar.

SELECT distinct
TBL01.Bairro AS Bairro
,'---' AS [ ]
,TBL02.*
FROM Tabela01 AS TBL01
OUTER APPLY
(
SELECT TOP 05
*
FROM Tabela01 AS TBL_SUB
WHERE TBL01.Bairro = TBL_SUB.Bairro
) AS TBL02

Espero ter ajudado
=)
GOSTEI 0
POSTAR