sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL-aggregaties met meerdere parameters

Hopelijk helpt dit voorbeeld. U hebt een functie nodig die (accumulator, aggregatie-argumenten) neemt en de nieuwe accumulatorwaarde retourneert. Speel wat met de onderstaande code en dat zou je een idee moeten geven van hoe het allemaal in elkaar past.

BEGIN;

CREATE FUNCTION sum_product_fn(int,int,int) RETURNS int AS $$
    SELECT $1 + ($2 * $3);
$$ LANGUAGE SQL;           

CREATE AGGREGATE sum_product(int, int) (
    sfunc = sum_product_fn,
    stype = int, 
    initcond = 0
);

SELECT 
    sum(i) AS one,     
    sum_product(i, 2) AS double,
    sum_product(i,3) AS triple
FROM generate_series(1,3) i;

ROLLBACK;      

Dat zou je zoiets moeten geven als:

 one | double | triple 
-----+--------+--------
   6 |     12 |     18


  1. Een datum-/tijdwaarde converteren naar een tekenreeks in SQL Server met CONVERT()

  2. Tabelrechten retourneren van een gekoppelde server in SQL Server (T-SQL-voorbeelden)

  3. Records ophalen uit de MySQL-database met PHP om een ​​vervolgkeuzelijst te vullen

  4. Onverwacht type variabele geretourneerd door Receive-Job