sql >> Database teknologi >  >> RDS >> PostgreSQL

PostgreSQL aggregeret funktion over rækkevidde

Der er to ændringer til dit forsøg. For det første tror jeg ikke, du kan bruge en operator som SFUNC, så du skal definere en navngivet funktion for at udføre krydset, og bruge det.

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

For det andet er standardværdien for et område det tomme område -- så krydset vil altid være tomt. Du skal initialisere området til et uendeligt område '[,]' for at begynde aggregatet. Den samlede definition ser så ud som:

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


  1. Hvordan kan jeg vælge fra liste over værdier i SQL Server

  2. EF med oracle - Den angivne butiksudbyder kan ikke findes i konfigurationen eller er ikke gyldig.

  3. Nem måde at vælge den højre kolonne som primær nøgle for en given tabel

  4. Sådan får du en liste over oprindelige Oracle-funktioner som (NVL, ABS osv.)