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

Trình tự phân vùng Oracle

Yêu cầu thực tế là dãy thứ cấp không có khoảng trống? Nếu vậy, bạn đã gặp phải vấn đề về khả năng mở rộng / tuần tự hóa khổng lồ.

Nếu bạn cần trình bày một trình tự không có khoảng trống cho tiêu dùng của con người, bạn có thể sử dụng một trình tự thực tế (hoặc dấu thời gian, cho vấn đề đó) như Nick Pierpont đề xuất và duy trì khả năng mở rộng, bạn có thể sử dụng các hàm phân tích.

Tập dữ liệu (t1):

 ID_PERSON SEQUENCE_ID
---------- -----------
         1           1
         2           2
         3           3
         1           4
         1           5
         1           6
         2           7
         3           8
         1           9

SQL:

select * 
  from 
  (select id_person, 
          sequence_id as orig_sequence_id,         
          rank () 
            over (partition by id_person 
                  order by sequence_id) 
            as new_sequence_id
     from t1
  )
 order by id_person, new_sequence_id;

Kết quả:

ID_PERSON  ORIG_SEQUENCE_ID NEW_SEQUENCE_ID
---------- ---------------- ---------------
         1                1               1
         1                4               2
         1                5               3
         1                6               4
         1                9               5
         2                2               1
         2                7               2
         3                3               1
         3                8               2


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-16205 Nâng cấp lên 11.2.0.3

  2. nhibernate, gọi hàm trong Oracle trả về con trỏ hệ thống

  3. ORA-12170:TNS:Đã xảy ra thời gian chờ kết nối

  4. Cơ sở dữ liệu Oracle BLOB sang InputStream trong Java?

  5. Trong WiX, làm cách nào để kiểm tra sự tồn tại của khóa đăng ký (không phải giá trị) cho Oracle ODP.Net