PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Agregacja według mediany w SQL

Możesz korzystać z funkcji okna. Zakładając, że jest to wartość liczbowa:

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 klauzula filtruje wiersze do 1 lub 2 dla każdego cobrand_id (zwróć uwagę na 2* ), więc działa to zarówno dla liczb parzystych, jak i nieparzystych w każdej partycji. Średnia z tych wartości jest wtedy medianą.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Znalezienie unikalnych rekordów, uporządkowanych według pól w powiązaniu z PostgreSQL i Rails 3?

  2. Postgresql w bazie danych pamięci django

  3. Ustawienie schematu w PostgreSQL JDBC nie działa

  4. Kiedy uruchamiam przypadki testowe otrzymuję ten błąd:psycopg2.OperationalError:cursor _django_curs_140351416325888_23 nie istnieje

  5. Klucz podstawowy z porządkowaniem ASC lub DESC?