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

Tìm 'chạy' các hàng từ một tập hợp kết quả có thứ tự

Bạn cần nhiều hàm cửa sổ lồng nhau:

SELECT *
FROM
 (
   SELECT the_date, name, grp,
      COUNT(*) OVER (PARTITION BY grp) AS cnt
   FROM
    (
      SELECT the_date, name, 
         SUM(flag) OVER (ORDER BY the_date) AS grp
      FROM
       (
         SELECT the_date, name, 
            CASE WHEN LAG(name) OVER (ORDER BY the_date) = name THEN 0 ELSE 1 END AS flag
         FROM orders
         WHERE 
             the_date BETWEEN 
                 TO_DATE('2013-09-18',..) AND 
                 TO_DATE('2013-09-22', ..)
       ) dt
    ) dt
 ) dt
WHERE cnt >= 3
ORDER BY the_date


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy cập / phản lực tương đương với giải mã của Oracle

  2. Tạo chuỗi ngẫu nhiên chữ hoa và chữ thường trong Oracle

  3. Tạo Trigger chạy trên hai bảng

  4. Câu lệnh INSERT trong PL / SQL không thành công trong cơ sở dữ liệu Oracle

  5. Làm cách nào để hủy tất cả các phiên kết nối với cơ sở dữ liệu oracle của tôi?