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

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

Как искали? По какой фразе?
...
Рейтинг: 0 / 0
Кол-во дней между датами
    #39981844
Palkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кол-во дней между датами. Есть что-то похожее, но не на 100%, а я SQL знаю оооочень поверхностно
...
Рейтинг: 0 / 0
Кол-во дней между датами
    #39981865
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Palkin, тогда вам стоит посмотртеть на DATEDIFF как уже советовали выше.
Остальные предлагаемые варианты для вас будут сложны.
...
Рейтинг: 0 / 0
Кол-во дней между датами
    #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
Кол-во дней между датами
    #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
Кол-во дней между датами
    #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
Кол-во дней между датами
    #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
Кол-во дней между датами
    #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
Кол-во дней между датами
    #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
Кол-во дней между датами
    #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
Кол-во дней между датами
    #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
Кол-во дней между датами
    #39986727
Palkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SIMPLicity_
Palkin
пропущено...


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


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


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


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