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

SQL-順序付きリストの変更の数をカウントします

    分析関数LEADを使用できます およびLAG 結果セットの前の行と次の行にアクセスし、それを使用して変更があるかどうかを確認します。

    SQL> ed
    Wrote file afiedt.buf
    
      1  with t as (
      2    select date '2011-10-22' dt, 3.2 price from dual union all
      3    select date '2011-10-23', 3.4 from dual union all
      4    select date '2011-10-24', 3.4 from dual union all
      5    select date '2011-10-25', 3.5 from dual union all
      6    select date '2011-10-26', 3.4 from dual union all
      7    select date '2011-10-27', 3.2 from dual union all
      8    select date '2011-10-28', 3.2 from dual
      9  )
     10  select sum(is_change)
     11    from (
     12      select dt,
     13             price,
     14             lag(price) over (order by dt) prior_price,
     15             (case when lag(price) over (order by dt) != price
     16                   then 1
     17                   else 0
     18               end) is_change
     19*       from t)
    SQL> /
    
    SUM(IS_CHANGE)
    --------------
                 4
    


    1. OracleでSELECTクエリを使用して空白/空の列を作成するにはどうすればよいですか?

    2. 異なる値で複数の行を更新する

    3. PHPでSQLクエリを実行するにはどうすればよいですか?

    4. バルクSMSの送信は途中で停止します