sql >> Database >  >> RDS >> PostgreSQL

Lopend totaal... met een twist

Probeer een aangepaste verzamelfunctie te maken zoals:

CREATE FUNCTION quota_calc_func(numeric, numeric, numeric) -- carry over, daily usage and daily quota
RETURNS numeric AS 
$$
  SELECT GREATEST(0, $1 + $3 - $2);
$$
LANGUAGE SQL STRICT IMMUTABLE;

CREATE AGGREGATE quota_calc( numeric, numeric ) -- daily usage and daily quota
(
    SFUNC = quota_calc_func,
    STYPE = numeric,
    INITCOND = '0'
);

WITH t(x, y) AS (
  VALUES (2, '2013-09-16'),
              (0, '2013-09-17'),
              (3, '2013-09-18'),
              (0, '2013-09-19'),
              (7, '2013-09-20'),
              (1, '2013-09-21'),
              (0, '2013-09-22'),
              (2, '2013-09-23'),
              (1, '2013-09-24'),
              (9, '2013-09-25')
)
SELECT x, y, quota_calc(x, 2) over (order by y)
FROM t;

Kan bugs bevatten, heb het niet getest.



  1. update als er twee velden zijn, invoegen als dat niet het geval is (MySQL)

  2. Het compatibiliteitsniveau van een database wijzigen met T-SQL

  3. Verschil tussen sleutel, primaire sleutel, unieke sleutel en index in MySQL

  4. Voeg automatisch letters toe voor een veld voor automatisch ophogen