sql >> データベース >  >> RDS >> PostgreSQL

累計...ひねりを加えて

    次のようなカスタム集計関数を作成してみてください:

    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;
    

    バグが含まれている可能性があり、テストされていません。



    1. データベースレコードがpostgresに書き込まれるときにシェルスクリプトを実行します

    2. pggemのインストール;エラー:gemネイティブ拡張のビルドに失敗しました

    3. Sqlalchemy:二次関係の更新

    4. $ result =mysql_query()