PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Агрегиране по средна стойност в SQL

Можете да използвате функции на прозореца. Ако приемем, че това е числова стойност:

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;

where клауза филтрира редовете до 1 или 2 за всеки cobrand_id (обърнете внимание на 2* ), така че това работи както за четни, така и за нечетни числа във всеки дял. Тогава средната стойност на тези стойности е медианата.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL дублирани редове с множество леви съединения

  2. pg_dump с --exclude-table все още включва тези таблици във фоновите команди COPY, които изпълнява?

  3. Как да използвам % оператор от разширението pg_trgm?

  4. Обединете множество редове с резултати от една колона в една, групирайте по друга колона

  5. Избиране на данни в Postgres масив