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

Funkcja agregująca PostgreSQL w zakresie

Twoja próba ma dwie modyfikacje. Po pierwsze, nie sądzę, że możesz użyć operatora jako SFUNC, więc musisz zdefiniować nazwaną funkcję do wykonania przecięcia i użyć jej.

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

Po drugie, domyślną wartością zakresu jest zakres pusty -- więc przecięcie zawsze będzie puste. Musisz zainicjować zakres do nieskończonego zakresu '[,]' aby rozpocząć agregację. Definicja zagregowana wygląda wtedy tak:

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. Jak ZMIENIĆ tabelę PostgreSQL i uczynić kolumnę unikalną?

  2. połącz się z serwerem postgres na silniku obliczeniowym Google

  3. Dynamiczne partycjonowanie tabel w postgresie

  4. Przyznać uprawnienia do przyszłych tabel w PostgreSQL?

  5. Jak mogę zmienić wielkość liter dla każdej litery w ciągu za pomocą SQL?