sql >> Database teknologi >  >> RDS >> Oracle

Sådan opretter du GROUP BY på min og maks. dato

Dette er en type huller-og-øer-problem med datokæder. Jeg vil foreslå at bruge en left join for at finde ud af, hvor øerne starter. Derefter en kumulativ sum og aggregering:

select emp_id, title, min(start_date), max(end_date)
from (select t.*,
             sum(case when tprev.emp_id is null then 1 else 0 end) over
                 (partition by t.emp_id, t.title order by t.start_date) as grouping
      from t left join
           t tprev
           on t.emp_id = tprev.emp_id and
              t.title = tprev.title and
              t.start_date = tprev.end_date + 1
     ) t
group by grouping, emp_id, title;


  1. Administrer transaktionssammenfald ved hjælp af låse i SQL Server

  2. Hvordan kan jeg gendanne MySQL root-brugerens fulde privilegier?

  3. Sådan overvåger du forbindelsespooling for .NET MySQL Data Connector i IIS

  4. MySQL dato sammenligning