Size: a a a

SqlCom.ru - Стиль жизни SQL

2021 January 28

Н

Никита in SqlCom.ru - Стиль жизни SQL
Ilia Zviagin
Это немного смахивает на горячечный бред, попробуй стереть это всё из своей памяти и написать заново.
Как будто ничего не было.
Кк

Есть такая таблица. Юзер и время ,нужно найти разницу по времени между первой и второй строкой по каждому пользователю. Пока что это нужно понять,как сделать
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
Никита
Кк

Есть такая таблица. Юзер и время ,нужно найти разницу по времени между первой и второй строкой по каждому пользователю. Пока что это нужно понять,как сделать
Например, рекурсивным запросом ...
источник

Н

Никита in SqlCom.ru - Стиль жизни SQL
Я написал так

SELECT hitId,
 DATEDIFF(hitTime)
     over(
         order by hitId
         ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING ) as minn
 FROM analytics-230012.Assignments.hits_for_sessions
 order by hitId

Но DATEDIFF так не работает и я не совсем понимаю ,как правильно это сделать
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
Никита
Я написал так

SELECT hitId,
 DATEDIFF(hitTime)
     over(
         order by hitId
         ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING ) as minn
 FROM analytics-230012.Assignments.hits_for_sessions
 order by hitId

Но DATEDIFF так не работает и я не совсем понимаю ,как правильно это сделать
Ну или оконками, да
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
Никита
Я написал так

SELECT hitId,
 DATEDIFF(hitTime)
     over(
         order by hitId
         ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING ) as minn
 FROM analytics-230012.Assignments.hits_for_sessions
 order by hitId

Но DATEDIFF так не работает и я не совсем понимаю ,как правильно это сделать
Но хреновый запрос будет...
источник

Н

Никита in SqlCom.ru - Стиль жизни SQL
Ilia Zviagin
Но хреновый запрос будет...
Почему?
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
Никита
Почему?
Работать медленно будет
источник

Н

Никита in SqlCom.ru - Стиль жизни SQL
Енивей он не рабочий
источник

Н

Никита in SqlCom.ru - Стиль жизни SQL
Ilia Zviagin
Работать медленно будет
там 11к строк,не очень много
источник

Н

Никита in SqlCom.ru - Стиль жизни SQL
А через рекурсию как можно было бы написать?
источник

DI

Dmitriy Ivanov in SqlCom.ru - Стиль жизни SQL
Никита
Я написал так

SELECT hitId,
 DATEDIFF(hitTime)
     over(
         order by hitId
         ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING ) as minn
 FROM analytics-230012.Assignments.hits_for_sessions
 order by hitId

Но DATEDIFF так не работает и я не совсем понимаю ,как правильно это сделать
Потому что фигню написали.
Функция datediff как по вашему может вычислить разницу, если у нее одно значение ?
И есть специальные операторы lag и lead, которые возвращают строку до или после текущей. И ещё есть подозрения, что вам не просто строку сверху или снизу надо брать, а ещё и guid пользователя учитывать.
источник

Н

Никита in SqlCom.ru - Стиль жизни SQL
Да, нужно группировать по юзерам
источник

DI

Dmitriy Ivanov in SqlCom.ru - Стиль жизни SQL
Никита
Да, нужно группировать по юзерам
И разницу время надо учитывать небось с первого вхождения и по последнее?
источник

Н

Никита in SqlCom.ru - Стиль жизни SQL
Dmitriy Ivanov
И разницу время надо учитывать небось с первого вхождения и по последнее?
Не совсем понял , разницу нужно учитывать между актуальным и предыдущим евентов
таким образом я найду интервалы между событиями
источник

DI

Dmitriy Ivanov in SqlCom.ru - Стиль жизни SQL
Никита
Не совсем понял , разницу нужно учитывать между актуальным и предыдущим евентов
таким образом я найду интервалы между событиями
У вас один пользователь может иметь больше чем 2 записи с одинаковым giud-ом и разным временем?
источник

Н

Никита in SqlCom.ru - Стиль жизни SQL
Dmitriy Ivanov
Потому что фигню написали.
Функция datediff как по вашему может вычислить разницу, если у нее одно значение ?
И есть специальные операторы lag и lead, которые возвращают строку до или после текущей. И ещё есть подозрения, что вам не просто строку сверху или снизу надо брать, а ещё и guid пользователя учитывать.
И да ,я не знаю,как у меня datediff вычислит разницу с 1 значением , поэтому я и хотел уточнить ,есть ли метод, чтобы вычислить разницу по времени?
источник

DI

Dmitriy Ivanov in SqlCom.ru - Стиль жизни SQL
/g datediff mssql
источник

G

GopoBot in SqlCom.ru - Стиль жизни SQL
DATEDIFF (Transact-SQL) - SQL Server | Microsoft Docs
https://docs.microsoft.com/en-us/sql/t-sql/functions/datediff-transact-sql
источник

Н

Никита in SqlCom.ru - Стиль жизни SQL
Dmitriy Ivanov
У вас один пользователь может иметь больше чем 2 записи с одинаковым giud-ом и разным временем?
Да, он может иметь много записей
1 запись , одно событие , он может делать сколько угодно событий с любым временным интервалом
источник

DI

Dmitriy Ivanov in SqlCom.ru - Стиль жизни SQL
Никита
Да, он может иметь много записей
1 запись , одно событие , он может делать сколько угодно событий с любым временным интервалом
Так длинна сессии считается как время последнего события минус время первого события?
источник