- Este tópico contém 22 respostas, 7 vozes e foi atualizado pela última vez 16 anos, 2 meses atrás por
fsitja.
-
AutorPosts
-
11 de janeiro de 2010 às 10:06 pm #91999
facc
ParticipanteBoa tarde,
Quero trazer em um SELECT uma certa quantidade de registros de um determinado campo.
Ex. na tabela possui 387120 registros, dentre esses registros vários se repetem (é normal, por se tratar de arquivo para Associação). Me solicitaram para trazer 50000 CPFs diferentes, pensei comigo é só fazer assim:Select * from tabela
where rownum <= :qtdd;Realmente me traz a quantidade exigida, porem ele está contando as linhas e não a quantidade de CPFs diferentes que me foi solicitado.
Explicando melhor: Preciso de um SELECT que me retorne 50000 CPFs diferentes, porém não posso colocar o distinct pela necessidade de também me retornar os CPFs repetidos, ou seja, preciso dos 50000 diferentes mais os repetidos.
11 de janeiro de 2010 às 10:20 pm #92000Peterson
ParticipanteNão entendi.
11 de janeiro de 2010 às 10:31 pm #92001facc
ParticipanteAssim, tenho uma tabela com um total de 387.120 registros (dentres eles 180.311 se repetem), preciso trazer 50000 CPFs diferentes
sei que poderia fazer dessa forma
Select distinct(CPF), from tabela
where rownum <= 50000;Mas não é isso que eles querem, eles querem que eu traga esses 50000 diferentes mais os que se repetem nesse intervalo, ou seja, no final irei trazer mais de 50000 linhas.
11 de janeiro de 2010 às 10:32 pm #92002burga
ParticipanteAssim não vai?
Select * from tabela
where rownum <= :qtdd
and cpf is not null;Edit:
desconsidere esse post… postei junto com vc, agora entendi o que vc quer… 😀11 de janeiro de 2010 às 10:33 pm #92003facc
Participante[quote=”burga”:340rm66v]Assim não vai?
Select * from tabela[/quote]
where rownum <= :qtdd
and cpf is not null;Todos os CPF possuem valor.
11 de janeiro de 2010 às 10:37 pm #92004burga
ParticipanteAgora sim… rs!! 8)
select *
from tabela
where cpf in
(select distinct(CPF) from tabela
where rownum <= 50000);11 de janeiro de 2010 às 10:40 pm #92005sancler
ParticipanteIsso resolve.
select *
from tabela
where cpf in
(select distinct(CPF) from tabela
where rownum <= :qtdd;
11 de janeiro de 2010 às 10:42 pm #92007sancler
ParticipanteOps!
Burga foi Crtl+C, Crtl+V não viu!
huahuahuahuahu
11 de janeiro de 2010 às 10:45 pm #92008facc
ParticipanteVou testar.
Volto com o resultado
11 de janeiro de 2010 às 10:46 pm #92009burga
ParticipanteO louco… rs!!! 😆
Pelo menos reforçou a idéia… kkkkkkk
11 de janeiro de 2010 às 10:59 pm #92012facc
Participante[quote=”burga”:307hf5qz]Agora sim… rs!! 8)
select *[/quote]
from tabela
where cpf in
(select distinct(CPF) from tabela
where rownum <= 50000);Quase isso, ele me retornou cerca de 25000 registros não repetidos… preciso que me retorne exatamente os 50000 não repetidos…
11 de janeiro de 2010 às 11:01 pm #92013sancler
ParticipanteFacc, você tem certeza que tem 50.000 registros não repetidos nessa tavela?
Pq esse select é pra retornar justamente o que você tá querendo.
att,
11 de janeiro de 2010 às 11:11 pm #92016facc
Participante[quote=”sancler”:20n20sg6]Facc, você tem certeza que tem 50.000 registros não repetidos nessa tavela?
Pq esse select é pra retornar justamente o que você tá querendo.
att,[/quote]
Segue os totais da tabelaTotal tabela: 387.120
Total não Repetidos: 206.809
Total repetidos: 180.31111 de janeiro de 2010 às 11:15 pm #92017sancler
ParticipanteFacc tenta assim.
select *
from tabela
where cpf in
(select distinct(CPF) from tabela)
and rownum <= 50000posta ai se deu certo.
11 de janeiro de 2010 às 11:15 pm #92018lobomaudiego
ParticipanteFacc,
Como você fez para ver registros repetidos?
Pois o select que o “burga” fez está correto.
Att,
Diego Monteiro
-
AutorPosts
- Você deve fazer login para responder a este tópico.