Oracle
 sql >> база данни >  >> RDS >> Oracle

Групиране на двоична променлива по ID и мин./макс. дати

От Oracle 12 това е типът проблем, който MATCH_RECOGNIZE има за цел да реши:

SELECT *
FROM   table_name
MATCH_RECOGNIZE (
  PARTITION BY Emp_ID
  ORDER     BY dt
  MEASURES
    FIRST(dt) AS min_date,
    LAST(dt)  AS max_date,
    MATCH_NUMBER() AS group_number
  PATTERN (one+)
  DEFINE
    one AS dummy = 1
)

Което за примерните данни:

CREATE TABLE table_name ( dt, Emp_ID, Dummy ) AS
SELECT DATE '2021-01-01', 5, 1 FROM DUAL UNION ALL
SELECT DATE '2021-01-02', 5, 1 FROM DUAL UNION ALL
SELECT DATE '2021-01-03', 5, 1 FROM DUAL UNION ALL
SELECT DATE '2021-01-04', 5, 1 FROM DUAL UNION ALL
SELECT DATE '2021-01-05', 5, 0 FROM DUAL UNION ALL
SELECT DATE '2021-01-06', 5, 1 FROM DUAL UNION ALL
SELECT DATE '2021-01-07', 5, 1 FROM DUAL UNION ALL
SELECT DATE '2021-01-01', 8, 1 FROM DUAL UNION ALL
SELECT DATE '2021-01-02', 8, 1 FROM DUAL UNION ALL
SELECT DATE '2021-01-03', 8, 1 FROM DUAL UNION ALL
SELECT DATE '2021-01-04', 8, 0 FROM DUAL UNION ALL
SELECT DATE '2021-01-05', 8, 0 FROM DUAL UNION ALL
SELECT DATE '2021-01-06', 8, 0 FROM DUAL UNION ALL
SELECT DATE '2021-01-07', 8, 1 FROM DUAL;

Изходи:

db<>fiddle тук




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вземете изходен параметър на Oracle с помощта на OracleCommand

  2. LongOpsWatcher в SQL Dev

  3. Повторете Base64 декодирането на Java в PL/SQL

  4. Oracle regex - не започва с и не завършва с

  5. Python Oracle, грешка при вмъкване на None