Size: a a a

2019 November 20

AS

Anastasiya Shmatkova in sql_ninja
Ну шо, 5 человек до 555? :)
источник

G

Gopneg in sql_ninja
почти
источник

AS

Anastasiya Shmatkova in sql_ninja
Ну ничего, ничего))
источник

AS

Anastasiya Shmatkova in sql_ninja
500 тоже долговзять не могли)
источник

G

Gopneg in sql_ninja
пока я бородой не посветил в маацкве, ничо не случилось
источник

TS

Tim Safari in sql_ninja
Gopneg
пока я бородой не посветил в маацкве, ничо не случилось
церковь Святого Гопнега
источник

Дt

Дмитрий texnix 🇨🇳 in sql_ninja
Светого
источник

F

Frankie4Fingers in sql_ninja
Gopneg
пока я бородой не посветил в маацкве, ничо не случилось
Святые гопники!😁
источник

F

Frankie4Fingers in sql_ninja
Gopneg
пока я бородой не посветил в маацкве, ничо не случилось
Ты приедешь к нам на корпоративку новогоднюю со сваей брадой?
источник

G

Gopneg in sql_ninja
Frankie4Fingers
Ты приедешь к нам на корпоративку новогоднюю со сваей брадой?
сильно вряд ли, у меня у сына перед НГ ДР и потом мы новый год у родственников отмечаем
источник

Дt

Дмитрий texnix 🇨🇳 in sql_ninja
в москве?
источник

G

Gopneg in sql_ninja
почти
источник

AS

Anastasiya Shmatkova in sql_ninja
Валерия Терпилко
Всем привет)
У меня сегодня день - тупняк
Вот я хочу найти действия между которыми меньше  5 минут, и если да, то обьединить в один промежуток
Надо собрать все

Вот я делаю партицию, знаю предыдущий и текущий
Через lead и lag
Сравниваю с текущим и если datediff с предыдущим больше 5 минут, то беру прошлый, если меньше оставляю NULL

Получается если связка всех действий с последним более 5минут назад
И ч0
Я запуталась в идее
Помогиииите
получилось что-то страшное, но вроде шевелится

with
   test as (select 0 as id UNION select 1 UNION select 4 UNION select 10 UNION select 14 UNION select 16 UNION select 20 UNION select 27
     UNION select 28 UNION select 29)
   ,prepare_1 as (
       select
           id
           ,case when (lag(id) over(order by id) + 5 < id) then 'begin'
               when lag(id) over(order by id) is null then 'first_begin' end as begin_flag
           ,case when (lead(id) over(order by id) - 5 > id) then 'end'
               when lead(id) over(order by id) is null then 'last_end' end as end_flag
       from
           test
           )
   ,prepare_2 as (
       select
           *
           ,case when begin_flag is not null then id else lead(id) over(order by id) end as start_id
           ,case when end_flag is null then lead(id) over(order by id) end as end_id
           -- ,case when end_flag is null then id end as end_id
       from
           prepare_1
       where begin_flag is not null or end_flag is not null
       )
select start_id, end_id
from        
   prepare_2
where
   start_id is not null
   and end_id is not null
источник

ВТ

Валерия Терпилко in sql_ninja
Anastasiya Shmatkova
получилось что-то страшное, но вроде шевелится

with
   test as (select 0 as id UNION select 1 UNION select 4 UNION select 10 UNION select 14 UNION select 16 UNION select 20 UNION select 27
     UNION select 28 UNION select 29)
   ,prepare_1 as (
       select
           id
           ,case when (lag(id) over(order by id) + 5 < id) then 'begin'
               when lag(id) over(order by id) is null then 'first_begin' end as begin_flag
           ,case when (lead(id) over(order by id) - 5 > id) then 'end'
               when lead(id) over(order by id) is null then 'last_end' end as end_flag
       from
           test
           )
   ,prepare_2 as (
       select
           *
           ,case when begin_flag is not null then id else lead(id) over(order by id) end as start_id
           ,case when end_flag is null then lead(id) over(order by id) end as end_id
           -- ,case when end_flag is null then id end as end_id
       from
           prepare_1
       where begin_flag is not null or end_flag is not null
       )
select start_id, end_id
from        
   prepare_2
where
   start_id is not null
   and end_id is not null
Спасибо
источник

ВТ

Валерия Терпилко in sql_ninja
Считать отдельно начала и ставить флаги
источник

ВТ

Валерия Терпилко in sql_ninja
А это интересно
источник

ВТ

Валерия Терпилко in sql_ninja
Спасибо
источник

ВТ

Валерия Терпилко in sql_ninja
SELECT MIN(l.dt),
      t.dt1
FROM log l
OUTER APPLY (
 SELECT MAX(dt) as dt1
 FROM log
 WHERE dt between l.dt and DATEADD(minute,5, l.dt)) as t
 GROUP BY t.dt1


Короче так удобнее с датами, чем lead и lag
источник

ВТ

Валерия Терпилко in sql_ninja
Но у меня вопрос
источник

ВТ

Валерия Терпилко in sql_ninja
Вот тут nested loop на between
источник