powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Кол-во часов, отработанное бригадой за период
6 сообщений из 31, страница 2 из 2
Кол-во часов, отработанное бригадой за период
    #39592047
Имел в виду, что вот это, выделенное красным, надо убрать...

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
select distinct sum(DATEDIFF(hour, min(FromDateTime), dateadd(hh,1,max(ToDateTime)))) over() as x_value
  from (
         select  FromDateTime, ToDateTime, sum(sog) over(order by FromDateTime,ToDateTime) as grp_id
           from (
                  select FromDateTime, ToDateTime,
                         case 
                           when max(ToDateTime) 
                               over(order by FromDateTime, ToDateTime 
                                        rows between unbounded preceding
                                                         and 1 preceding
                                   ) >= FromDateTime
                           then 0 
                           else 1 
                         end as sog 
                    from uchet_vremeni t
                ) v0
       ) v1
 group by grp_id
...
Рейтинг: 0 / 0
Кол-во часов, отработанное бригадой за период
    #39592063
Гордон Шамуэй,

Совершенно верно....
...
Рейтинг: 0 / 0
Кол-во часов, отработанное бригадой за период
    #39593036
Kopelly
Потом просуммировав этот флаг по предыдущим работам:
Код: sql
1.
sum(sog) over(order by FromDateTime,ToDateTime) as grp_id


получим группы интервалов которые пересекаются внутри группы, но пересекаются с другими группами. Взяв максимум и минимум по таким группам получим начала и конец непрерывной работы.

Извините, можете чуть подробнее объяснить вот такой момент:
Мы пометили интервалы, начало которых пересекается с предыдущими как 0, а непересекающиеся - как 1
У нас получилось два временнЫх интервала с единицей и три - с нулем. Тут понятно.
Непонятно, как мы просуммировали 1+0+0+1+0 и получили 1 и 2 (grp_id)?
...
Рейтинг: 0 / 0
Кол-во часов, отработанное бригадой за период
    #39593041
Гордон ШамуэйKopellyПотом просуммировав этот флаг по предыдущим работам:
Код: sql
1.
sum(sog) over(order by FromDateTime,ToDateTime) as grp_id


получим группы интервалов которые пересекаются внутри группы, но пересекаются с другими группами. Взяв максимум и минимум по таким группам получим начала и конец непрерывной работы.

Извините, можете чуть подробнее объяснить вот такой момент:
Мы пометили интервалы, начало которых пересекается с предыдущими как 0, а непересекающиеся - как 1
У нас получилось два временнЫх интервала с единицей и три - с нулем. Тут понятно.
Непонятно, как мы просуммировали 1+0+0+1+0 и получили 1 и 2 (grp_id)?


Понял. Это накопительный итог по всему кадру (все 5 строк)
Но пока не понял, что нам это дало))
...
Рейтинг: 0 / 0
Кол-во часов, отработанное бригадой за период
    #39593045
Но пока не понял, что нам это дало))

Фух, понял и это)
...
Рейтинг: 0 / 0
Кол-во часов, отработанное бригадой за период
    #39593156
Руслан Дамирович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы прослушали монолог "Тяжело в учении, в работе вообще сдохнешь".
...
Рейтинг: 0 / 0
6 сообщений из 31, страница 2 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Кол-во часов, отработанное бригадой за период
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]