sql >> Base de Datos >  >> RDS >> PostgreSQL

Agregando por valor medio en SQL

Puede utilizar funciones de ventana. Suponiendo que se trata de un valor numérico:

select cobrand_id, avg(xsum) as median
from (select m.*,
             row_number() over (partition by cobrand_id order by xsum) as seqnum,
             count(*) over (partition by cobrand_id) as cnt
      from tmp_median m
     ) m
where 2*seqnum in (cnt, cnt + 1, cnt + 2)
group by cobrand_id;

El where La cláusula filtra las filas a 1 o 2 para cada cobrand_id (nota el 2* ), por lo que esto funciona tanto para números pares como impares en cada partición. El promedio de estos valores es entonces la mediana.