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

Jak uzyskać średnią wartości „środkowych” w grupie?

Inna opcja wykorzystująca funkcje analityczne;

SELECT group_id,
       avg( test_value )
FROM (
  select t.*,
         row_number() over (partition by group_id order by test_value ) rn,
         count(*) over (partition by group_id  ) cnt
  from test t
) alias 
where 
   cnt <= 3
   or 
   rn between floor( cnt / 2 )-1 and ceil( cnt/ 2 ) +1
group by group_id
;

Demo --> http://www.sqlfiddle.com/#!11/af5e0 /59



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. postgresql:podział czasu na imprezie

  2. Utwórz/wstaw Json w Postgresie z żądaniami i psycopg2

  3. indeks postgresql w kolumnie string

  4. Nie można określić nazwy dostawcy dla fabryki dostawców typu „Npgsql.NpgsqlFactory”

  5. Django SearchVector za pomocą ikontains