sql >> Database >  >> RDS >> Oracle

Rijen groeperen rekening houdend met het verschil tussen rijen

Ik gebruik subquery's met analyses om aaneengesloten bereiken te identificeren en te groeperen:

SQL> WITH test_data AS (
  2    SELECT  0 s, 2 dur FROM dual UNION ALL   --# ■■
  3    SELECT  2  , 2     FROM dual UNION ALL   --#   ■■
  4    SELECT 10  , 1     FROM dual UNION ALL   --#           ■
  5    SELECT 13  , 4     FROM dual UNION ALL   --#              ■■■■
  6    SELECT 15  , 4     FROM dual             --#                ■■■■
  7  )
  8  SELECT MIN(s) "begin", MAX(s + dur) "end"
  9    FROM (SELECT s, dur, SUM(gap) over(ORDER BY s) my_group
 10             FROM (SELECT s, dur,
 11                           CASE
 12                              WHEN lag(s + dur) over(ORDER BY s) >= s - 5 THEN
 13                               0
 14                              ELSE
 15                               1
 16                           END gap
 17                      FROM test_data
 18                     ORDER BY s))
 19   GROUP BY my_group;

     begin        end
---------- ----------
         0          4
        10         19


  1. Wanneer zijn (SELECT) queries gepland?

  2. Hoe toegang te krijgen tot Sqlite db-bestand dat lokaal is opgeslagen [activamap] in projectbestand met behulp van cordova

  3. drop db in postgres

  4. Aan de slag met PostgreSQL-streamingreplicatie