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

SQL Oracle Counting Clusters

    ORACLEでLEADおよびLAG関数を使用すると、次のクエリを作成できます。

    1.シャットダウンの数:

    WITH IntTable AS
    ( SELECT * FROM
      (
       SELECT dt b_date,value,LEAD(dt) OVER (ORDER BY dt) e_date  FROM
         (
            select "Date" dt,"Value" value,
                   LAG("Value") OVER (ORDER BY "Date") pvalue,
                   LEAD("Value") OVER (ORDER BY "Date") nvalue
            from T
         ) T1
         WHERE pvalue is NULL or value<>pvalue or nvalue is NULL 
       )
    WHERE E_DATE is NOT NULL
    )
    SELECT COUNT(*) FROM IntTable where value = 0 
    

    SQLFiddleデモ

    2.すべてのシャットダウン間の期間

    WITH IntTable AS
    ( SELECT * FROM
      (
       SELECT dt b_date,value,LEAD(dt) OVER (ORDER BY dt) e_date  FROM
         (
            select "Date" dt,"Value" value,
                   LAG("Value") OVER (ORDER BY "Date") pvalue,
                   LEAD("Value") OVER (ORDER BY "Date") nvalue
            from T
         ) T1
         WHERE pvalue is NULL or value<>pvalue or nvalue is NULL 
       )
    WHERE E_DATE is NOT NULL
    )
    SELECT b_date,e_date, (e_date-b_date) * 60 * 24 FROM IntTable where value = 1 
    

    SQLFiddleデモ



    1. OracleデータベースでPL/SQL弱参照カーソルを作成する方法

    2. Djangoで同等のGROUP_CONCAT

    3. MariaDBでのUPPER()のしくみ

    4. SQLPlusでスクリプトを実行すると、出力の代わりに一連の数値が出力されます