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

Tìm số năm liên tiếp tối đa cho mỗi ID trong một bảng (Oracle SQL)

Điều này sẽ tạo ra kết quả mong muốn của bạn:

select
  id,
  ayear,
  byear,
  yeardiff
from
(
  select
    a.id,
    a.year ayear,
    b.year byear,
    (b.year - a.year)+1 yeardiff,
    dense_rank() over (partition by a.id order by (b.year - a.year) desc) rank
  from
    years a
    join years b on a.id = b.id 
        and b.year > a.year
  where
    b.year - a.year = 
      (select count(*)-1
         from years a1
        where a.id = a1.id
             and a1.year between a.year and b.year)
)
where
  rank = 1

CHỈNH SỬA được cập nhật để hiển thị năm bắt đầu / năm kết thúc kéo dài nhất.

SQLFiddle



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để tạo bảng trong Oracle SQL Developer?

  2. An toàn TO_NUMBER ()

  3. Không thể chuyển giá trị chuỗi 1,2 làm đầu vào cho một truy vấn tiên tri

  4. Xử lý lỗi Oracle

  5. .Patch_storage lớn