Конференция "Базы" » SQL запрос, сумма проммежутков времени. Как убрать пересечения? [MSSQL]
 
  • O'ShinW © (14.12.12 10:18) [20]
    да, спасибо

    > ROLLUP ?

    и CUBE рулят!
    (и чтение мануалов.. тоже рулит :))

    ps
    В MSSQL практически также
    ...
    GROUP BY F1,F2
    WITH CUBE
  • Игорь Шевченко © (14.12.12 11:00) [21]

    > и чтение мануалов.. тоже рулит


    Всегда
  • qwe (23.12.12 17:00) [22]
    да да да !!!
  • Павел Калугин (24.12.12 00:06) [23]

    > Возникла ситуация, когда могут перекрываться промежутки,
    >  т.е. StartedAt больше, чем EndedAt в предыдущей строке.
    >

    И че?
    Что посчитать то надо? datediff  по строке  сколько один процесс занял и игого по всем?  так при чем тут предыдущие строки?
    Или у тебя в одной строке Started позже Ended?  Ну тогда в консерватории что-то менять надо..
  • Павел Калугин (24.12.12 00:13) [24]

    > Не понял что значит 1600 и 1200. Там полный timestamp хранится.
    >  Сумма будет равна количеству секунд между (01.12-12.12),
    >  т.е. сумма двух промежутков, минус их пересечение.

    То есть тебе сначала надо схлопнуть все интервалы,  а потом ?
    1,  01.01.01 12:35:00,  01.01.01 13:35:00
    2,  01.01.01 12:36:00,  01.01.01 13:36:00
    3,  01.01.01 13:39:00,  01.01.01 13:40:00
    4,  01.01.01 14:35:00,  01.01.01 15:35:00
    5,  02.01.01 12:35:00,  03.01.01 13:35:00
    6,  03.01.01 14:35:00,  01.01.01 13:35:00

    Что должно быть на выходе?
    Почему именно так?


    > Единственное, что приходит в голову - это поставить триггер
    > на добавление записи и если StartedAt меньше последнего
    > EndedAt, то делать его равным последнему EndedAt. Тогда
    > запрос будет тривиальным.

    Самое гнусное что можно придумать - это "корябать" входные данные под удобство запроса...
 
Конференция "Базы" » SQL запрос, сумма проммежутков времени. Как убрать пересечения? [MSSQL]
Есть новые Нет новых   [119674   +112][b:0][p:0]