Trazer Registro com data mais atual

28/09/2020

0

Oi pessoal tudo bem?
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

Patricia Brito

Responder

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?

Prezado Emerson segue estrutura da tabela brsafe_segcorp
DAT_CONSULTA_REGRA DATETIME
NR_CONSULTA INT
NR_CPF VARCHAR
PONTUACAO INT

Patricia Brito

Patricia Brito
Responder

Mais Posts

28/09/2020

Emerson Nascimento

veja se isto te dá um norte....
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

Responder

28/09/2020

Patricia Brito

veja se isto te dá um norte....
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;
Responder

28/09/2020

Emerson Nascimento

pontuacao é um valor ou é a soma dos registros de um cpf ?

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

Responder

28/09/2020

Patricia Brito

pontuacao é um valor ou é a soma dos registros de um cpf ?

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;
Responder

28/09/2020

Emerson Nascimento


Patrícia, você precisa listar alguns registros e qual resultado você espera (exatamente como espera).



Responder

29/09/2020

Patricia Brito


Patrícia, você precisa listar alguns registros e qual resultado você espera (exatamente como espera).



Bom dia Emerson na verdade eu preciso que a consulta mostre a qtda. mês a mês com risco sendo a ultima consulta do CPF esse é o objetivo da consulta.
Obrigada pela ajuda
Responder

29/09/2020

Patricia Brito


Patrícia, você precisa listar alguns registros e qual resultado você espera (exatamente como espera).



Bom dia Emerson na verdade eu preciso que a consulta mostre a qtda. mês a mês com risco sendo a ultima consulta do CPF esse é o objetivo da consulta.
Obrigada pela ajuda
Precisa contar todos os riscos igual ou maior do que 25 pegando apenas a ultima consulta do cpf
Responder

30/09/2020

Patricia Brito

Bom dia!
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

Responder

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?

Responder

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?

Oi Emerson desculpe a demora estava corrido aqui no trabalho.
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

Responder

09/10/2020

Patricia Brito

pontuacao é um valor ou é a soma dos registros de um cpf ?

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
Responder

13/10/2020

Emerson Nascimento

com base no enunciado:
"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)
)

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar