PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Fungsi agregat PostgreSQL melebihi jangkauan

Ada dua modifikasi untuk usaha Anda. Pertama, saya rasa Anda tidak dapat menggunakan operator sebagai SFUNC, jadi Anda perlu mendefinisikan fungsi bernama untuk melakukan perpotongan, dan menggunakannya.

CREATE or REPLACE FUNCTION int_tsrange(a tsrange, b tsrange)
   returns tsrange language plpgsql as 
      'begin return a * b; end';

Kedua, nilai default untuk rentang adalah rentang kosong -- jadi persimpangan akan selalu kosong. Anda perlu menginisialisasi rentang ke rentang tak terbatas '[,]' untuk memulai agregat. Definisi agregat kemudian terlihat seperti:

CREATE AGGREGATE intersection ( tsrange ) (
    SFUNC = int_tsrange,
    STYPE = tsrange,
    INITCOND = '[,]'
);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PGEast, Pembandingan Perangkat Keras, dan PG Performance Farm

  2. Spring JDBC + Postgres SQL + Java 8 - konversi dari/ke LocalDate

  3. Bagaimana membandingkan dua array dan hanya memilih elemen yang tidak cocok Di postgres

  4. Bagaimana cara memilih beberapa baris dengan kunci utama komposit mereka di JOOQ?

  5. Mengisi kolom Many2many (odoo 8)