sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL aggregatfunktion över intervall

Det finns två modifieringar av ditt försök. För det första tror jag inte att du kan använda en operator som SFUNC, så du måste definiera en namngiven funktion för att göra korsningen, och använda den.

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

För det andra är standardvärdet för ett område det tomma området -- så skärningspunkten kommer alltid att vara tom. Du måste initiera intervallet till ett oändligt intervall '[,]' för att börja aggregatet. Den aggregerade definitionen ser då ut så här:

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


  1. Varför stöder inte MySQL:s MyISAM-motor främmande nycklar?

  2. pgAdmin Alternatives - PostgreSQL Database Management GUI ClusterControl

  3. Cloud Vendor Deep-Dive:PostgreSQL på AWS Aurora

  4. Redigera tabellrader / poster i SQL Server Management Studio ( SSMS) - SQL Server självstudie / TSQL självstudie del 18