sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL aggregat med flera parametrar

Förhoppningsvis hjälper detta exempel. Du behöver en funktion som tar (ackumulator, aggregat-argument) och returnerar det nya ackumulatorvärdet. Lek med koden nedan och det borde ge dig en känsla för hur allt hänger ihop.

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 borde ge dig något i stil med:

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


  1. Är det någon som vet innebörden bakom detta php-felmeddelande?

  2. SQL som kräver självanslutning och rankning

  3. SQL-fel:# 1064 när du skapar en funktion i plsql med mysql

  4. Hur ansluter man R till MySQL? Det gick inte att ansluta till databasen:Fel:Plugin caching_sha2_password kunde inte laddas