Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

SQL - Đếm số lượng thay đổi trong danh sách có thứ tự

Bạn có thể sử dụng các hàm phân tích LEADLAG để truy cập vào hàng trước và hàng tiếp theo của tập hợp kết quả, sau đó sử dụng hàng đó để xem có thay đổi không.

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. Giám sát SQL trong nhà phát triển SQL

  2. Nguyên nhân gây ra sự khác biệt giữa thời gian CPU và thời gian đã trôi qua trong tệp tkprof của Oracle

  3. SEC_CASE_SENSTIVE_LOGON trong 12c

  4. Wildfly không thể tải mô-đun cho trình điều khiển Oracle

  5. làm thế nào để nối nhiều hơn hai cột trong nhà phát triển plsql?