sql >> Databáze >  >> RDS >> PostgreSQL

Agregační funkce PostgreSQL v rozsahu

Váš pokus má dvě modifikace. Zaprvé, nemyslím si, že můžete použít operátor jako SFUNC, takže musíte definovat pojmenovanou funkci pro provedení průniku a použít ji.

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

Za druhé, výchozí hodnota pro rozsah je prázdný rozsah -- takže průsečík bude vždy prázdný. Rozsah je třeba inicializovat na nekonečný rozsah '[,]' k zahájení agregace. Souhrnná definice pak vypadá takto:

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


  1. optimalizovat dotaz na počet mysql

  2. Nová funkce pro BYOC – pozastavení a obnovení clusterů

  3. phpmailer nemůže odesílat poštu

  4. Jak změnit typ dat sloupce v SQL Server (T-SQL)