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

Menemukan 'lari' baris dari kumpulan hasil yang dipesan

Anda memerlukan beberapa fungsi jendela bersarang:

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. Kunci Utama Identitas yang Dihasilkan Secara Otomatis Oracle SQL

  2. Minggu kerja SQL di Oracle

  3. NULLIF() Fungsi di Oracle

  4. Dapatkan catatan terakhir dari kumpulan hasil

  5. Bagaimana cara menggunakan kata kunci 'sebagai' untuk alias tabel di Oracle?