Trazer Registro com data mais atual
28/09/2020
0
Eu tenho a seguinte situação:
Banco de Dados Mysql 8.0 e tenho uma tabela por nome brsafe_segcorp_diaria e tenho as colunas :
nr_cpf, nr_consulta, dat_consulta_regra,pontuacao
Preciso extrair a consulta mais recente do cpf com pontuacao acima de 25
Segue a Query que usei mas não está dando certo.
Segue a consulta que estou fazendo
select distinct (nr_cpf),count(nr_consulta) as TOTAL_CONSULTA
,DATE(dat_consulta_regra) AS DATA
from brsafe_segcorp_diaria
where dat_consulta_regra between "2020-09-01 00:00:00" AND "2020-09-31 23:59:59"
group by DATE(dat_consulta_regra);
Patricia Brito
Post mais votado
09/10/2020
CPF Pontuação nr_consul total data 00001411195 36 123504974 1 2020-07-29 16:19:00 00003162028 88 123508263 1 2020-07-29 17:04:00 00003805123 31 123501635 9 2020-07-29 15:46:00 00005149690 92 123473623 1 2020-07-29 11:10:00 00006759203 69 123366313 5 2020-07-28 17:34:00 00007403496 46 123506606 1 2020-07-29 16:39:00 00007720386 92 123495987 1 2020-07-29 14:12:00 00008023956 53 123561386 1 2020-07-30 16:57:00 00008097720 53 123413693 3 2020-07-28 10:50:00
esses são os dados que você tem no banco ou é o resultado já tratado pela instrução SQL?
não tenha medo de publicar alguns registros aqui. estamos aqui pra ajudar e é necessário saber como os registros são gravados para entender como montar a instrução que vá atender a tua necessidade.
como eu te pedi antes, apresente os registros como são, e depois como você espera o resultado, porque no resultado que você apresentou não tem CPFs repetidos, então como contar ou agrupar algo?
DAT_CONSULTA_REGRA DATETIME
NR_CONSULTA INT
NR_CPF VARCHAR
PONTUACAO INT
Patricia Brito
Mais Posts
28/09/2020
Emerson Nascimento
select nr_cpf, count(nr_consulta) as TOTAL_CONSULTA, max(dat_consulta_regra) AS DATA from brsafe_segcorp_diaria where pontuacao > 25 dat_consulta_regra between "2020-09-01 00:00:00" AND "2020-09-31 23:59:59" group by nr_cpf
28/09/2020
Patricia Brito
select nr_cpf, count(nr_consulta) as TOTAL_CONSULTA, max(dat_consulta_regra) AS DATA from brsafe_segcorp_diaria where pontuacao > 25 dat_consulta_regra between "2020-09-01 00:00:00" AND "2020-09-31 23:59:59" group by nr_cpf
Boa tarde Emerson tudo bem?
Obrigada pela ajuda , mas não trouxe informação nenhuma então eu fiz a alteração e deixei dessa forma que também não deu certo.
select nr_cpf, count(nr_consulta)as TOTAL_CONSULTA,
max(dat_consulta_regra) AS DATA
from brsafe_segcorp_diaria
where pontuacao > 25 and dat_consulta_regra >= "2020-09-01"
group by nr_cpf;
28/09/2020
Emerson Nascimento
pra que seja possível entender melhor a tua necessidade, apresente um exemplo dos registros da tua tabela.
se a pontuação for uma soma dos registros do cpf, faça algo assim:
select nr_cpf, count(nr_consulta) as TOTAL_CONSULTA, max(dat_consulta_regra) AS DATA from brsafe_segcorp_diaria --where -- dat_consulta_regra between "2020-09-01 00:00:00" AND "2020-09-31 23:59:59" group by nr_cpf having sum(pontuacao) > 25
28/09/2020
Patricia Brito
pra que seja possível entender melhor a tua necessidade, apresente um exemplo dos registros da tua tabela.
se a pontuação for uma soma dos registros do cpf, faça algo assim:
select nr_cpf, count(nr_consulta) as TOTAL_CONSULTA, max(dat_consulta_regra) AS DATA from brsafe_segcorp_diaria --where -- dat_consulta_regra between "2020-09-01 00:00:00" AND "2020-09-31 23:59:59" group by nr_cpf having sum(pontuacao) > 25
Boa tarde Emerson ,
Então a pontuação é um registro e eu usei essa Query abaixo e trouxe o que eu preciso porém não por mês.
select nr_cpf,pontuacao,nr_consulta, count(nr_consulta)as TOTAL_CONSULTA,
max(dat_consulta_regra) AS DATA
from brsafe_segcorp_diaria
where pontuacao>25 and dat_consulta_regra >= "2020-09-01"
group by nr_cpf order by nr_cpf asc;
28/09/2020
Emerson Nascimento
Patrícia, você precisa listar alguns registros e qual resultado você espera (exatamente como espera).
29/09/2020
Patricia Brito
Patrícia, você precisa listar alguns registros e qual resultado você espera (exatamente como espera).
Obrigada pela ajuda
29/09/2020
Patricia Brito
Patrícia, você precisa listar alguns registros e qual resultado você espera (exatamente como espera).
Obrigada pela ajuda
30/09/2020
Patricia Brito
Eu fiz uma query que contou a quantidade de consultas por cpf com pontuacao >= 25 porém preciso que ele faça a soma de consultas por cpf com pontuação >=25 considerado apenas a consulta mais recente.
Exemplo : CPF x tem pontuação 50 e ele Fez 5 consultas no mês de julho
CPF y tem pontuação 28 e ele fez 3 consultas no mês de julho então na consulta teria que vir total nr_consulta 2 mês julho
Segue a Query que eu fiz com ajuda do Emerson
select nr_cpf,pontuacao,nr_consulta, count(nr_consulta)as TOTAL_CONSULTA,
max(dat_consulta_regra) AS DATA
from brsafe_segcorp_diaria
where dat_consulta_regra between "2020-07-25" and "2020-07-31 " and pontuacao>25
group by nr_cpf order by nr_cpf asc;
CPF Pontuação nr_consul total data
00001411195 36 123504974 1 2020-07-29 16:19:00
00003162028 88 123508263 1 2020-07-29 17:04:00
00003805123 31 123501635 9 2020-07-29 15:46:00
00005149690 92 123473623 1 2020-07-29 11:10:00
00006759203 69 123366313 5 2020-07-28 17:34:00
00007403496 46 123506606 1 2020-07-29 16:39:00
00007720386 92 123495987 1 2020-07-29 14:12:00
00008023956 53 123561386 1 2020-07-30 16:57:00
00008097720 53 123413693 3 2020-07-28 10:50:00
30/09/2020
Emerson Nascimento
CPF Pontuação nr_consul total data 00001411195 36 123504974 1 2020-07-29 16:19:00 00003162028 88 123508263 1 2020-07-29 17:04:00 00003805123 31 123501635 9 2020-07-29 15:46:00 00005149690 92 123473623 1 2020-07-29 11:10:00 00006759203 69 123366313 5 2020-07-28 17:34:00 00007403496 46 123506606 1 2020-07-29 16:39:00 00007720386 92 123495987 1 2020-07-29 14:12:00 00008023956 53 123561386 1 2020-07-30 16:57:00 00008097720 53 123413693 3 2020-07-28 10:50:00
esses são os dados que você tem no banco ou é o resultado já tratado pela instrução SQL?
não tenha medo de publicar alguns registros aqui. estamos aqui pra ajudar e é necessário saber como os registros são gravados para entender como montar a instrução que vá atender a tua necessidade.
como eu te pedi antes, apresente os registros como são, e depois como você espera o resultado, porque no resultado que você apresentou não tem CPFs repetidos, então como contar ou agrupar algo?
06/10/2020
Patricia Brito
CPF Pontuação nr_consul total data 00001411195 36 123504974 1 2020-07-29 16:19:00 00003162028 88 123508263 1 2020-07-29 17:04:00 00003805123 31 123501635 9 2020-07-29 15:46:00 00005149690 92 123473623 1 2020-07-29 11:10:00 00006759203 69 123366313 5 2020-07-28 17:34:00 00007403496 46 123506606 1 2020-07-29 16:39:00 00007720386 92 123495987 1 2020-07-29 14:12:00 00008023956 53 123561386 1 2020-07-30 16:57:00 00008097720 53 123413693 3 2020-07-28 10:50:00
esses são os dados que você tem no banco ou é o resultado já tratado pela instrução SQL?
não tenha medo de publicar alguns registros aqui. estamos aqui pra ajudar e é necessário saber como os registros são gravados para entender como montar a instrução que vá atender a tua necessidade.
como eu te pedi antes, apresente os registros como são, e depois como você espera o resultado, porque no resultado que você apresentou não tem CPFs repetidos, então como contar ou agrupar algo?
Eu quero saber a quantidade de CPFs que tiveram a sua última consulta sendo maior de 25 pontos. Pois existem cpf que constam 5 consultas e preciso na verdade da mais recente caso tenha pontuacao>=25
Nessa tabela brsafe_segcorp_diaria eu tenho as colunas : NR_CPF, NR_CONSULTA, DAT_CONSULTA_REGRA, PONTUACAO
09/10/2020
Patricia Brito
pra que seja possível entender melhor a tua necessidade, apresente um exemplo dos registros da tua tabela.
se a pontuação for uma soma dos registros do cpf, faça algo assim:
select nr_cpf, count(nr_consulta) as TOTAL_CONSULTA, max(dat_consulta_regra) AS DATA from brsafe_segcorp_diaria --where -- dat_consulta_regra between "2020-09-01 00:00:00" AND "2020-09-31 23:59:59" group by nr_cpf having sum(pontuacao) > 25
Prezado Emerson segue estrutura da tabela
tabela brsafe_segcorp
DAT_CONSULTA_REGRA DATETIME
NR_CONSULTA INT
NR_CPF VARCHAR
PONTUACAO INT
13/10/2020
Emerson Nascimento
"Exemplo : CPF x tem pontuação 50 e ele Fez 5 consultas no mês de julho
CPF y tem pontuação 28 e ele fez 3 consultas no mês de julho então na consulta teria que vir total nr_consulta 2 mês julho"
e na estrutura
DAT_CONSULTA_REGRA DATETIME
NR_CONSULTA INT
NR_CPF VARCHAR
PONTUACAO INT
não será possível apresentar o número do CPF, visto que a contagem é justamente de CPFs.
pode ser assim:
select round(year(c1.DAT_CONSULTA_REGRA)+MONTH(c1.DAT_CONSULTA_REGRA)/100,2) ano_mes, count(distinct c1.NR_CPF) qtd_consultas from brsafe_segcorp c1 where c1.PONTUACAO > 25 group by round(year(c1.DAT_CONSULTA_REGRA)+MONTH(c1.DAT_CONSULTA_REGRA)/100,2)
com base no enunciado:
"Preciso extrair a consulta mais recente do cpf com pontuacao acima de 25"
select * from brsafe_segcorp c1 where c1.PONTUACAO > 25 and c1.DAT_CONSULTA_REGRA = (select max(c2.DAT_CONSULTA_REGRA) from brsafe_segcorp c2 where c2.NR_CPF = c1.NR_CPF)
se for a ultima consulta dentro do mês, de um CPF com pontuação maior que 25:
select * from brsafe_segcorp c1 where c1.PONTUACAO > 25 and c1.DAT_CONSULTA_REGRA = (select max(c2.DAT_CONSULTA_REGRA) from brsafe_segcorp c2 where c2.NR_CPF = c1.NR_CPF and year(c2.DAT_CONSULTA_REGRA) = year(c1.DAT_CONSULTA_REGRA) and month(c2.DAT_CONSULTA_REGRA) = month(c1.DAT_CONSULTA_REGRA) )
Clique aqui para fazer login e interagir na Comunidade :)