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

Как да получите средна стойност на „средните“ стойности в група?

Друга опция, използваща аналитични функции;

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
;

Демо --> 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. Как да избера редове със стойност на колона като нула?

  2. sql изберете най-ранната дата за множество редове

  3. Psycopg2 вмъква речник на python в базата данни на postgres

  4. Възможно ли е да се отговори на запитвания за изглед, преди напълно да се материализира изгледът?

  5. Как да запазя JS Date.now() в PostgreSQL?