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

指定された時間間隔での集計関数

    CREATE TABLE tt (time TIMESTAMP, value NUMBER);
    
    INSERT INTO tt (time, value) VALUES ('06-JUN-12 12.40.00.000000000 PM', 2);
    INSERT INTO tt (time, value) VALUES ('06-JUN-12 12.41.35.000000000 PM', 3);
    INSERT INTO tt (time, value) VALUES ('06-JUN-12 12.43.22.000000000 PM', 4);
    INSERT INTO tt (time, value) VALUES ('06-JUN-12 12.47.55.000000000 PM', 5);
    INSERT INTO tt (time, value) VALUES ('06-JUN-12 12.52.00.000000000 PM', 2);
    INSERT INTO tt (time, value) VALUES ('06-JUN-12 12.54.59.000000000 PM', 3);
    INSERT INTO tt (time, value) VALUES ('06-JUN-12 12.56.01.000000000 PM', 4);
    
    
    WITH tmin AS (
        SELECT MIN(time) t FROM tt
    ),   tmax AS (
        SELECT MAX(time) t FROM tt
    )
    SELECT ranges.inf, ranges.sup, AVG(tt.value)
    FROM
         (
            SELECT 
                5*(level-1)*(1/24/60) + tmin.t as inf,
                5*(level)*(1/24/60) + tmin.t as sup
            FROM tmin, tmax
            CONNECT BY (5*(level-1)*(1/24/60) + tmin.t) < tmax.t
        ) ranges JOIN tt ON tt.time BETWEEN ranges.inf AND ranges.sup
    GROUP BY ranges.inf, ranges.sup
    ORDER BY ranges.inf
    

    フィドル:http://sqlfiddle.com/#!4 / 9e314 / 11

    編集:いつものようにジャスティンに殴られた... :-)



    1. 加重行確率を持つPostgreSQLテーブルからランダムな行を選択します

    2. 基本的なSQLクエリ

    3. Passport、Redis、およびMySQLを使用してNode.jsでセッションを管理する方法

    4. DAYOFMONTH()の例– MySQL