sql >> Database >  >> RDS >> Sqlserver

SQL-query om items op tijd te groeperen, maar alleen als ze bij elkaar in de buurt zijn?

Dit wordt het "eilandenprobleem" genoemd en ik heb dit als een oplossing gezien (credit 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. Regex gebruiken met LIKE om eerst alfabetten te sorteren en daarna symbolen SQL

  2. Hoe ontwerp je een relationele database om meerdere tags aan id te koppelen?

  3. MySql Zacht verwijderen

  4. sql geografie naar dbgeography?