GARANTIR DESCONTO

Fórum COMO FAZER CONSULTA SEM MOSTRAR OS REGISTROS QUE SE REPETEM - SQL SERVER #573586

09/01/2017

0

BOA TARDE TENHO A SEGUINTE TABELA

CODIGO,
OCUPACAO,
ADULTOS,
CRIANCAS,
BEBES,
TOTALPESSOAS
DT_ATUALIZAÇÃO


PRECISO REALIZAR UMA CONSULTA QUE ME RETORNE OS REGISTROS QUE TIVEREM A MAIOR OCUPAÇÃO NO DIA, SEM EXIBIR OS OUTROS REGISTROS DA MESMA DATA, OU SEJA SÓ POSSO MOSTRAR UM REGISTRO POR DATA, E TEM QUE SER O MAIOR DA DATA COMO POSSO FAZER ISSO?
Felipe Evangelista

Felipe Evangelista

Responder

Posts

09/01/2017

Douglas Noronha

Experimente se isso resolve:
Select codigo,COUNT(ocupacao) as qtd_ocupacao, MAX(data_atualizacao) AS data_atualizacao FROM tabela
GROUP BY data_atualizacao,ocupacao
Responder

Gostei + 0

09/01/2017

Felipe Evangelista

Esse código Douglas me retornou os registros sem duplica-los, porém ele deve verificar a data e se no mesmo dia tiver vários registros com ocupações maiores ele me retorna o registro que tem a ocupação maior. EX dia 9/01/2016 tive 20 registros e o maior foi com a ocupação 20 pessoas ele precisa me mostrar que o maior registro foi esse no dia e ignorar os demais e exibir no select os outros campos da tabela também.
Responder

Gostei + 0

09/01/2017

Felipe Evangelista

Esse código Douglas me retornou os registros sem duplica-los, porém ele deve verificar a data e se no mesmo dia tiver vários registros com ocupações maiores ele me retorna o registro que tem a ocupação maior. EX dia 9/01/2016 tive 20 registros e o maior foi com a ocupação 20 pessoas ele precisa me mostrar que o maior registro foi esse no dia e ignorar os demais e exibir no select os outros campos da tabela também.
e fazer o mesmo com os demais dias da semana.
Responder

Gostei + 0

09/01/2017

Alec Candia

Talvez a resposta passe pelas cláusulas TOP(1) - para mostrar apenas o maior registro, ou pela HAVING depois do GROUP BY para filtrar o dado que deseja, baseado no agrupamento.
Responder

Gostei + 0

09/01/2017

Felipe Evangelista

Com o TOP 1 ele mostra apenas 1 registro, preciso que ele filtre 1 de cada data e exiba 1 de cada data, não somente 1 linha, se tiver 20 datas diferentes precisa retornar as 20 linhas
Responder

Gostei + 0

10/01/2017

Fabiano Carvalho

Tente assim

SELECT * FROM TABLE A
INNER JOIN (SELECT CAST(DT_ATUALIZAÇÃO AS DATE) DT_ATUALIZAÇÃO_CONVERTIDA ,MAX(DT_ATUALIZAÇÃO) AS DT_ATUALIZAÇÃO
FROM TABLE) B
ON CAST(A.DT_ATUALIZAÇÃO AS DATE) = B.DT_ATUALIZAÇÃO_CONVERTIDA
AND A.DT_ATUALIZAÇÃO = B.DT_ATUALIZAÇÃO
Responder

Gostei + 0

10/01/2017

Felipe Evangelista

Essa consulta me retornou todos os campos ainda, não serviu, eu preciso que ele retorne para mim a ocupação máxima de cada dia, mostrando todos os outros campos. Eu tinha feito antes dessa forma
select max(ocupacao), dt_atualizacao from ocupacaodiaria group by dt_atualizacao 

tinha me retornado o que eu esperava de forma correta, só que eu precisei dps que ele mostra-se os outros campos da tabela ai coloquei
assim
select max(ocupacao), dt_atualizacao, adultos, criancas, bebes, totalpessoas from ocupacaodiaria group by dt_atualizacao, adultos, criancas, bebes, totalpessoas
ai ele me retornou todos os valores sem agrupar por data igual era antes e mostrando a maior ocupação de cada dia devido ao group by que tive que por os outros campos, ai eu preciso que a consulta mostre a maior ocupação de cada dia, agrupando por data.
Responder

Gostei + 0

26/01/2017

Mooney55

http://respostas.guj.com.br/13493-selecionar-top-5-de-registros-que-mais-se-repetem
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar