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

PostgreSQL aggregater med flere parametre

Forhåbentlig vil dette eksempel hjælpe. Du skal bruge en funktion, der tager (akkumulator, aggregat-argumenter) og returnerer den nye akkumulatorværdi. Leg med koden nedenfor, og det burde give dig en fornemmelse af, hvordan det hele hænger sammen.

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;      
 

Det burde give dig noget som:

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

  1. MySQL dynamisk krydsfane

  2. Få mest muligt ud af dine PostgreSQL-indekser

  3. Brug XEvent Profiler til at fange forespørgsler i SQL Server

  4. Sådan omdøbes en database i MySQL