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

Runding total... med et twist

Prøv at oprette en tilpasset aggregeret funktion som:

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 indeholde fejl, har ikke testet det.



  1. Hvordan fungerer numerisk sammenligning på Oracle VARCHAR kolonne?

  2. Dapper eller MySql finder ikke lagrede procedurer, der indeholder et punktum.

  3. Hvordan kan jeg aktivere unaccent-udvidelsen på en allerede eksisterende model

  4. Hvordan kan jeg undslippe kantede parenteser i en LIKE-klausul?