powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / выборка каждый третий день в месяце (?)
21 сообщений из 21, страница 1 из 1
выборка каждый третий день в месяце (?)
    #39997544
masir0n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.
Существует таблица с полями: клиент , товар (который он купил), даты (когда он его купил)
Мне нужно получить как то только тех клиентов, которые совершали покупку хотя один раз в три дня за месяц


По причине недостатка опыта, я не совсем понимаю как мне это написать само по себе в pl/sql
А еще фишка будет в том , что в месяце не 30 дней, а 31 , соответственно последние это будут за 2 дня, а не 3

как бы это можно было хорошо написать, что бы он искал продажи за каждые три дня и в дальнейшем это использовать на большее кол-во месяцев (чем 1 )
А на один месяц можно конечно 10 раз по три дня расписать, как дурак

п.с. Извиняюсь заголовок не так написал (не изменить почему то )
...
Рейтинг: 0 / 0
выборка каждый третий день в месяце (?)
    #39997545
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
masir0n
что в месяце не 30 дней, а 31 , соответственно последние это будут за 2 дня, а не 3
а не один день?

а 28 и 29?
...
Рейтинг: 0 / 0
выборка каждый третий день в месяце (?)
    #39997546
masir0n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andreymx,
Ну это тоже да , нужно будет учитывать, для использования большего кол-ва месяцев
На данный момент это 31 день , месяц который мне нужен
...
Рейтинг: 0 / 0
выборка каждый третий день в месяце (?)
    #39997547
masir0n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andreymx,
один да
...
Рейтинг: 0 / 0
выборка каждый третий день в месяце (?)
    #39997548
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
12345678910111213141516171819202122232425262728293031111111111111111111111111какие данные подойдёт, какие нет?
...
Рейтинг: 0 / 0
выборка каждый третий день в месяце (?)
    #39997549
oragraf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
masir0n,

Разность дат соседних покупок не более 3х дней
...
Рейтинг: 0 / 0
выборка каждый третий день в месяце (?)
    #39997551
masir0n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andreymx,
Верхняя строка подойдет
...
Рейтинг: 0 / 0
выборка каждый третий день в месяце (?)
    #39997554
masir0n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
oragraf,
ну типо, клиент в течении месяца, должен совершать покупку хотя бы 1 раз за три дня , не отдельно, а за каждые три дня он должен хотя бы купить что то один раз
...
Рейтинг: 0 / 0
выборка каждый третий день в месяце (?)
    #39997556
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
первого и шестого - это подходит?
...
Рейтинг: 0 / 0
выборка каждый третий день в месяце (?)
    #39997570
masir0n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andreymx,
ну как я правильно понял: 1 - это продажа
null - это продажа не совершалась
первая строка один клинет , вторая - другой , так ?
Ну и там единичка стоит в каждом блоке из трех дней грубо говоря - так что это подходит
...
Рейтинг: 0 / 0
выборка каждый третий день в месяце (?)
    #39997577
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
masir0n,

инщите интервал (lag/lead) между покупками < 4 дня (с учетом месяца)

если покупки 20/01, 30/01, 01/02, 04/02, 05/02, то клиент не совешал покупок один раз в три дня за месяц?


ps
лень(нет времени пригрузили чутку) набивать тестовые
....
stax
...
Рейтинг: 0 / 0
выборка каждый третий день в месяце (?)
    #39997584
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так ТС и не ответил
1 и 6 подходят? они раз в три дня, если три дня именно кусками по три дня, начиная с первого числа
или берем как пример 1,4,5,8,11,12,15 - т.е. интервал не более 2-х дней между продажами?
...
Рейтинг: 0 / 0
выборка каждый третий день в месяце (?)
    #39997596
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в месяце может быть и меньше дней, к примеру в феврале 1918 года в РСФСР было всего 14 дней и февраль начался с 14 числа :)
...
Рейтинг: 0 / 0
выборка каждый третий день в месяце (?)
    #39997599
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А бизнес топик-стартера уже тогда существовал?
Не повезло, наверное, бедняжке - не пережил военного коммунизма ...
...
Рейтинг: 0 / 0
выборка каждый третий день в месяце (?)
    #39997600
masir0n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andreymx,
А , я тебя понял
Нет, интервал не важен , там главное что бы в границах трех дней была хоть одна продажа
1 и 6 подходят да
...
Рейтинг: 0 / 0
выборка каждый третий день в месяце (?)
    #39997601
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Майкрософт просит предупреждать о таких событиях за два года
...
Рейтинг: 0 / 0
выборка каждый третий день в месяце (?)
    #39997602
masir0n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,
> инщите интервал (lag/lead) между покупками < 4 дня (с учетом месяца)
сейчас попробую

> если покупки 20/01, 30/01, 01/02, 04/02, 05/02, то клиент не совешал покупок один раз в три дня за месяц?
да верно , между 20 и 30 числом 10 дней , значит такое не подходит , нужно чтоб именно за каждые три дня в месяца , была хотя бы 1 покупка
...
Рейтинг: 0 / 0
выборка каждый третий день в месяце (?)
    #39997609
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
masir0n
Stax,
> инщите интервал (lag/lead) между покупками < 4 дня (с учетом месяца)
сейчас попробую

> если покупки 20/01, 30/01, 01/02, 04/02, 05/02, то клиент не совешал покупок один раз в три дня за месяц?
да верно , между 20 и 30 числом 10 дней , значит такое не подходит , нужно чтоб именно за каждые три дня в месяца , была хотя бы 1 покупка


авторинщите интервал (lag/lead) между покупками < 4 дня (с учетом месяца)


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
SQL> ed
Wrote file afiedt.buf

  1  with t(client_id,dat) as (
  2  select 1,date '2020-01-20' from dual union all
  3  select 1,date '2020-01-31' from dual union all
  4  select 1,date '2020-02-01' from dual union all
  5  --
  6  select 2,date '2020-01-20' from dual union all
  7  select 2,date '2020-01-23' from dual union all
  8  select 3,date '2020-01-30' from dual union all
  9  --
 10  select 3,date '2020-01-20' from dual
 11  )
 12  ,tt as (
 13  select t.*
 14  ,lead(dat) over(partition by client_id,trunc(dat,'mm') order by dat) l --to_char(dat,'yyyymm')
 15  from t)
 16* select unique client_id from tt where l-dat<4
SQL> /

 CLIENT_ID
----------
         2


....
stax
...
Рейтинг: 0 / 0
выборка каждый третий день в месяце (?)
    #39997611
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
masir0n
> если покупки 20/01, 30/01, 01/02, 04/02, 05/02, то клиент не совешал покупок один раз в три дня за месяц?
да верно , между 20 и 30 числом 10 дней , значит такое не подходит , нужно чтоб именно за каждые три дня в месяца была хотя бы 1 покупка
плохой из вас постановщик
я бы не смог работать

что такое "за каждые три дня в месяца"? интервал между покупками не более двух дней?
...
Рейтинг: 0 / 0
выборка каждый третий день в месяце (?)
    #39997613
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,

если можно несколько покупок в один день то

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
SQL> ed
Wrote file afiedt.buf

  1  with t(client_id,dat) as (
  2  select 1,date '2020-01-20' from dual union all
  3  select 1,date '2020-01-20' from dual union all
  4  select 1,date '2020-01-31' from dual union all
  5  select 1,date '2020-02-01' from dual union all
  6  --
  7  select 2,date '2020-01-20' from dual union all
  8  select 2,date '2020-01-23' from dual union all
  9  select 2,date '2020-01-30' from dual union all
 10  --
 11  select 3,date '2020-01-20' from dual
 12  )
 13  ,tt as (
 14  select t.*
 15  ,lead(trunc(dat)) over(partition by client_id,trunc(dat,'mm') order by dat) l
 16  from t)
 17* select unique client_id from tt where l-trunc(dat)<4 and l-trunc(dat)>=1
SQL> /

 CLIENT_ID
----------
         2


.....
stax
...
Рейтинг: 0 / 0
выборка каждый третий день в месяце (?)
    #39997617
masir0n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,
Да , все так , спасибо
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / выборка каждый третий день в месяце (?)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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