Oracle
 sql >> Baza danych >  >> RDS >> Oracle

jak pobrać liczbę ciągłych wystąpień wartości kolumny w sql?

Po pierwsze, w SQL z definicji dane nie mają żadnego porządku, chyba że ORDER BY jest używany.
Patrz:Wikipedia – Zamów przez

Musisz podać dodatkową kolumnę do swojej tabeli, która określa kolejność i może być używana w ORDER BY klauzula, na przykładRN kolumna w poniższym przykładzie:

        RN CS_ID     
---------- ----------
         1 a         
         2 b         
         3 a         
         4 a         
         5 a         
         6 b         
         7 b         
         8 b         
         9 b   

Dla powyższych danych możesz użyć Common Table Expression (zapytanie rekurencyjne), aby uzyskać wymagany wynik, na przykład poniższe zapytanie działa na bazie danych Oracle:

WITH my_query( RN, cs_id , cont ) AS (

    SELECT t.rn, t.cs_id, 1
        FROM My_table t
        WHERE rn = 1
    UNION ALL
    SELECT t.rn, t.cs_id,
         case when t.cs_id = m.cs_id
              then m.cont + 1
              else 1
         end
        FROM My_table t
        JOIN my_query m
        ON t.rn = m.rn + 1
)
select * from my_query
order by rn;

        RN CS_ID            CONT
---------- ---------- ----------
         1 a                   1
         2 b                   1
         3 a                   1
         4 a                   2
         5 a                   3
         6 b                   1
         7 b                   2
         8 b                   3
         9 b                   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. Wyłącz CAST AS, aby zoptymalizować zapytanie w Entity Framework

  2. wyrażenie regularne dla wszystkich znaków akcentowanych w Oracle

  3. Problem:uzyskiwanie różnych wyników z zapytań SUM

  4. Importuj obiekt blob przez SAS z ORACLE DB

  5. Oracle - podział dat na ćwiartki