Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

SQL - Hitung jumlah perubahan dalam daftar yang dipesan

Anda dapat menggunakan fungsi analitik LEAD dan LAG untuk mengakses baris sebelumnya dan berikutnya dari kumpulan hasil dan kemudian menggunakannya untuk melihat apakah ada perubahan.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mengatasi kesalahan Oracle ORA-01790?

  2. Oracle:mengonversi angka menjadi kata dalam bahasa lain selain bahasa Inggris

  3. Bagaimana cara memilih baris dengan karakter UTF-8 4-byte di Oracle DB?

  4. Tanggal Javascript ke objek tanggal sql

  5. penjualan rata-rata kuartal dengan penjualan rata-rata kuartal sebelumnya