sql >> Database teknologi >  >> RDS >> Sqlserver

SQL-forespørgsel for at gruppere elementer efter tid, men kun hvis de er tæt på hinanden?

Dette kaldes "ø-problemet", og jeg har set dette som en løsning (kredit Itzik Ben Gan)

select  tool_number,
        min(time) 'in',
        max(time) 'out',
        count(*)
from    (
    select  tool_number,
            time,
            ROW_NUMBER() OVER (ORDER BY time) - ROW_NUMBER() OVER (PARTITION BY Tool_Number ORDER BY time) AS Grp
    from    #temp
    ) as a
group by grp, tool_number
order by min(time)


  1. Simple Graph Search Algoritme i SQL (PostgreSQL)

  2. VÆLG fra mysql-database på javascript-kald

  3. Hibernates saveOrUpdate ignorerer kolonneegenskaben ikke-nul

  4. Online/Offline Database Synkronisering - MySQL/PHP