Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

282
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda