Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Кол-во дней между датами / 14 сообщений из 14, страница 1 из 1
20.07.2020, 10:51
    #39981693
Palkin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кол-во дней между датами
Всем привет.
Уверен ответ есть на сайте, но найти не смог.
Есть таблица с клиентами, покупками, суммой и датами.
Нужно вывести кол-во дней между покупками для каждого ID
И вывести кол-во дней между регистрацией и первой покупкой и между регистрацией и последней покупкой.
...
Рейтинг: 0 / 0
20.07.2020, 10:59
    #39981696
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кол-во дней между датами
Palkin,

lag/lead, row_number, datediff
...
Рейтинг: 0 / 0
20.07.2020, 14:05
    #39981808
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кол-во дней между датами
Palkin
Уверен ответ есть на сайте, но найти не смог.

Как искали? По какой фразе?
...
Рейтинг: 0 / 0
20.07.2020, 14:57
    #39981844
Palkin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кол-во дней между датами
Кол-во дней между датами. Есть что-то похожее, но не на 100%, а я SQL знаю оооочень поверхностно
...
Рейтинг: 0 / 0
20.07.2020, 15:36
    #39981865
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кол-во дней между датами
Palkin, тогда вам стоит посмотртеть на DATEDIFF как уже советовали выше.
Остальные предлагаемые варианты для вас будут сложны.
...
Рейтинг: 0 / 0
20.07.2020, 15:42
    #39981871
SIMPLicity_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кол-во дней между датами
Не понял суть вопроса, но начнём с этого:

Код: sql
1.
2.
3.
4.
declare @tbl table (userId int, regDate date, orderDate date);
insert @tbl(userId, regDate, orderDate)
  values (1,'20191230', '20191230'), (2,'20191230', '20200102'), (3,'20200215', '20200224'), (1,'20191230', '20200301');
select *, datediff(dd, regDate, orderDate) [от регистрации до заказа (в днях)] from @tbl order by userId; 





userIdregDateorderDateот регистрации до заказа (в днях)12019-12-302019-12-30012019-12-302020-03-016222019-12-302020-01-02332020-02-152020-02-249
...
Рейтинг: 0 / 0
20.07.2020, 16:06
    #39981884
Palkin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кол-во дней между датами
SIMPLicity_
Не понял суть вопроса, но начнём с этого:

Код: sql
1.
2.
3.
4.
declare @tbl table (userId int, regDate date, orderDate date);
insert @tbl(userId, regDate, orderDate)
  values (1,'20191230', '20191230'), (2,'20191230', '20200102'), (3,'20200215', '20200224'), (1,'20191230', '20200301');
select *, datediff(dd, regDate, orderDate) [от регистрации до заказа (в днях)] from @tbl order by userId; 





userIdregDateorderDateот регистрации до заказа (в днях)12019-12-302019-12-30012019-12-302020-03-016222019-12-302020-01-02332020-02-152020-02-249


А если записей 800 тыс?
...
Рейтинг: 0 / 0
20.07.2020, 21:21
    #39982032
SIMPLicity_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кол-во дней между датами
Palkin
SIMPLicity_
Не понял суть вопроса, но начнём с этого:

Код: sql
1.
2.
3.
4.
declare @tbl table (userId int, regDate date, orderDate date);
insert @tbl(userId, regDate, orderDate)
  values (1,'20191230', '20191230'), (2,'20191230', '20200102'), (3,'20200215', '20200224'), (1,'20191230', '20200301');
select *, datediff(dd, regDate, orderDate) [от регистрации до заказа (в днях)] from @tbl order by userId; 





userIdregDateorderDateот регистрации до заказа (в днях)12019-12-302019-12-30012019-12-302020-03-016222019-12-302020-01-02332020-02-152020-02-249


А если записей 800 тыс?

Каким предполагается ВИД ОТВЕТА, если у клиента с id=1 было 7 покупок в период с момента регистрации по сегодняшний день, у клиента с id=3 всего две покупки, а клиент (если есть такой вдруг) с id = 5 сделал только одну покупку в день регистрации? Вам стоит от этого отталкиваться, похоже. К-во записей тут особо ни на что не влияет ;)
...
Рейтинг: 0 / 0
21.07.2020, 06:19
    #39982091
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кол-во дней между датами
как-то так:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
with t as (
  select o1.CustomerID, o1.OrderDate,
      min(o2.OrderDate) NextOrderDate
    from Orders o1 join Orders o2
      on o1.CustomerID = o2.CustomerID
      where o1.OrderDate < o2.OrderDate
    group by o1.CustomerID, o1.OrderDate) 
select t.CustomerId, t.OrderDate,
    datediff(day, t.OrderDate, t.NextOrderDate) DaysToNextOrder
  from t order by 1, 2
...
Рейтинг: 0 / 0
21.07.2020, 08:59
    #39982115
daniel klein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кол-во дней между датами
SIMPLicity_,
Можно ещё так
Код: sql
1.
2.
3.
4.
5.
6.
 
declare @tbl table (userId int, regDate datetime, orderDate datetime);
insert @tbl(userId, regDate, orderDate)
  values (1,'20191230', '20191230'), (2,'20191230', '20200102'), (3,'20200215', '20200224'), (1,'20191230', '20200301');
select *,  cast(orderDate-regDate as int)
from @tbl order by userId;



Модератор: Используйте тег src
...
Рейтинг: 0 / 0
21.07.2020, 15:22
    #39982271
SIMPLicity_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кол-во дней между датами
daniel klein
SIMPLicity_,
Можно ещё так
Код: sql
1.
2.
3.
4.
5.
6.
 
declare @tbl table (userId int, regDate datetime, orderDate datetime);
insert @tbl(userId, regDate, orderDate)
  values (1,'20191230', '20191230'), (2,'20191230', '20200102'), (3,'20200215', '20200224'), (1,'20191230', '20200301');
select *,  cast(orderDate-regDate as int)
from @tbl order by userId;



Модератор: Используйте тег src


зачем cast(orderDate-regDate as int) если есть стандартный функционал datediff(... , ... ,..) ?
...
Рейтинг: 0 / 0
21.07.2020, 22:44
    #39982431
Palkin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кол-во дней между датами
SIMPLicity_
Palkin
пропущено...


А если записей 800 тыс?


Каким предполагается ВИД ОТВЕТА, если у клиента с id=1 было 7 покупок в период с момента регистрации по сегодняшний день, у клиента с id=3 всего две покупки, а клиент (если есть такой вдруг) с id = 5 сделал только одну покупку в день регистрации? Вам стоит от этого отталкиваться, похоже. К-во записей тут особо ни на что не влияет ;)


id Дней между 1 и 2 покупкой Дней между 2 и 3 покупкой Дней между 3…... … …
q1 1 3 …. …
q2 2 5 …. … …
q3 1 4 … … …
...
Рейтинг: 0 / 0
22.07.2020, 01:31
    #39982466
SIMPLicity_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кол-во дней между датами
Palkin
SIMPLicity_
пропущено...


Каким предполагается ВИД ОТВЕТА, если у клиента с id=1 было 7 покупок в период с момента регистрации по сегодняшний день, у клиента с id=3 всего две покупки, а клиент (если есть такой вдруг) с id = 5 сделал только одну покупку в день регистрации? Вам стоит от этого отталкиваться, похоже. К-во записей тут особо ни на что не влияет ;)


id Дней между 1 и 2 покупкой Дней между 2 и 3 покупкой Дней между 3…... … …
q1 1 3 …. …
q2 2 5 …. … …
q3 1 4 … … …


т.е. максимальное количество колонок получаемой таблицы определяется максимальным количеством заказов у "самого активного" клиента?
...
Рейтинг: 0 / 0
05.08.2020, 14:28
    #39986727
Palkin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кол-во дней между датами
SIMPLicity_
Palkin
пропущено...


id Дней между 1 и 2 покупкой Дней между 2 и 3 покупкой Дней между 3…... … …
q1 1 3 …. …
q2 2 5 …. … …
q3 1 4 … … …


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


Ну можно и так, но основная цель, понять разницу между датами и понять частоту покупок клиента
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Кол-во дней между датами / 14 сообщений из 14, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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