Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

291
Visualizações
Postgres: promedio de valores superiores a los percentiles 90, 95 y 98

Tengo una columna en una tabla con varios registros enteros.

Necesito escribir una consulta PostgreSql que devolverá el promedio de todos los valores que son mayores que el percentil 90, 95 y 98.

p.ej

Tengo la serie 1-150 en mi columna.

Ahora, si tomo el percentil 90 de esta columna, es alrededor de 135.

Necesito calcular el promedio de todos los valores mayores a 135.

Del mismo modo para el percentil 95 y 98 también.

Y si es posible los tres valores en una sola consulta.

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

como muestra utilizo números del 1 al 300:

 t=# select generate_series(1,300,1) g g --- 1 2 3 4 ...

aquí hay un ejemplo:

 t=# with p as ( with s as ( select generate_series(1,300,1) g ) select g,ntile(100) over (order by g) , case when ntile(100) over (order by g) between 90 and 94 then 90 when ntile(100) over (order by g) between 95 and 97 then 95 when ntile(100) over (order by g) >=98 then 98 end "percentile" from s ) select distinct "percentile",avg(g) over (partition by "percentile") from p where ntile >=90; percentile | avg ------------+---------------------- 90 | 275.0000000000000000 98 | 296.0000000000000000 95 | 287.0000000000000000 (3 rows)
over 4 years ago · Santiago Trujillo Relatório

0

Si entendí correctamente, puede ser que necesites esto.

tratar:

 with t(col) as( select * from generate_series(1, 150) ) select (select avg(col) from t where col > (select count(*) * 90 / 100.00 from t)), (select avg(col) from t where col > (select count(*) * 95 / 100.00 from t)), (select avg(col) from t where col > (select count(*) * 98 / 100.00 from t))
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda