PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm thế nào để lấy giá trị trung bình của các giá trị 'trung bình' trong một nhóm?

Một tùy chọn khác sử dụng các hàm phân tích;

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. Nhà cung cấp dịch vụ đám mây chuyên sâu:PostgreSQL trên DigitalOcean

  2. Trình kích hoạt chung để hạn chế số lần chèn dựa trên số lượng

  3. PostgreSQL Chọn mục nhập gần đây nhất cho một ID nhất định

  4. PHP và Postgres:bắt lỗi?

  5. Sự khác biệt giữa pg_table_size, pg_relation_size &pg_total_relation_size là gì? (PostgreSQL)