powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Простая выборка с данными
25 сообщений из 32, страница 1 из 2
Простая выборка с данными
    #39742788
sossisson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть лог входа пользователей в систему с информацией пользователь-дата входа.
USERAUTH_DATE1'01-01-2018'2'01-01-2018'1'02-01-2018'3'01-01-2018'1'03-01-2018'


Как сделать запрос, который покажет кто из пользователей заходил каждый день в течении недели или месяца?
...
Рейтинг: 0 / 0
Простая выборка с данными
    #39742793
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sossisson,

count(distinct ) + group by + having
...
Рейтинг: 0 / 0
Простая выборка с данными
    #39742939
sossisson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MaximaXXL,
это понятно. Но я хотел выбрать именно, где 7 дней подряд люди есть в логах.
Я так понимаю, что без аналитических функций здесь не обойтись, но вот как?
...
Рейтинг: 0 / 0
Простая выборка с данными
    #39742943
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тебе и ответили
count(distinct )=7
count(distinct )=30(31)
...
Рейтинг: 0 / 0
Простая выборка с данными
    #39742944
sossisson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183,
разве это будет работать, если пользователь заходил не все дни подряд, а были перерывы по 3-4 дня?
...
Рейтинг: 0 / 0
Простая выборка с данными
    #39742952
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача тогда не та, которую ты написал.
...
Рейтинг: 0 / 0
Простая выборка с данными
    #39742964
sossisson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183,
я же написал в первом посте "запрос, который покажет кто из пользователей заходил каждый день в течении недели или месяца"
...
Рейтинг: 0 / 0
Простая выборка с данными
    #39742975
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поищи темы про объединение временных промежутков.
Сформируешь данные по типу:
Код: plaintext
1.
2.
3.
1 '01-01-2018'  '03-01-2018'
2 '01-01-2018'  '11-01-2018'
3 '01-01-2018'  '02-01-2018'

Ну и выбираешь те записи, у которых разница между датами >= 7.
...
Рейтинг: 0 / 0
Простая выборка с данными
    #39742981
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sossisson,

Напишите Ваш селект, или хотябы тестовые данные в формате with, а то пока не понятно что вообще Вы хотите

Код: plsql
1.
2.
3.
4.
5.
select "USER", count(distinct trunc(AUTH_DATE))
from table
where trunc(AUTH_DATE) between :p_Date_From and :p_Date_To
group by "USER"
having count(distinct trunc(AUTH_DATE)) = 1+:p_Date_To - :p_Date_From
...
Рейтинг: 0 / 0
Простая выборка с данными
    #39742983
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sossisson,

надеюсь, AUTH_DATE имеет тип DATE?

но в целом, "курите" в эту торону :
trunc(AUTH_DATE) - dense_rank() over(partition by user order by trunc(AUTH_DATE)) as grp_id

далее - группировка по user , grp_id и фильтрация результата группировки по уже упомянутому count(distinct trunc(AUTH_DATE)) в упомянутом же HAVING-е
...
Рейтинг: 0 / 0
Простая выборка с данными
    #39742985
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sossissonв течении недели или месяцаа это течени е , все-таки, семь дней, семь суток или неделя. И течение месяца, это месяц или сколько-то там суток, в зависимости от ...
...
Рейтинг: 0 / 0
Простая выборка с данными
    #39742986
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaximaXXLsossisson,

Напишите Ваш селект, или хотябы тестовые данные в формате with, а то пока не понятно что вообще Вы хотите

Код: plsql
1.
2.
3.
4.
5.
select "USER", count(distinct trunc(AUTH_DATE))
from table
where trunc(AUTH_DATE) between :p_Date_From and :p_Date_To
group by "USER"
having count(distinct trunc(AUTH_DATE)) = 1+:p_Date_To - :p_Date_From

пользователь мог три дня ходить по сто раз, затем день перекурить и ещё четыре дня ходить по 10 раз. Будет ли это "семь дней подряд" в постановке автора? Вряд ли. А в решении вашим запросом? Запросто...
...
Рейтинг: 0 / 0
Простая выборка с данными
    #39742988
Zhelezyakin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sossisson,

Думаю, вам надо пойти от обратного . Для выбранного интервала ищите даты когда данный пользователь не регистрировался.
Если такой запрос вернет ноль записей , значит данный пользователь регистрировался каждый день.
...
Рейтинг: 0 / 0
Простая выборка с данными
    #39742992
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sossissonя же написал в первом посте "запрос, который покажет кто из пользователей заходил каждый день в течении недели или месяца"
А выборку ты делаешь за неделю/месяц или за более длительный срок?
...
Рейтинг: 0 / 0
Простая выборка с данными
    #39742995
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щукина Анна,

Не совсем понятно при чем тут перекур в 1 день, если Вас смущает 1+ то это из за between который учитывает оба параметра.
итого например между 07.01.2018 и 01.01.2018 разница 6 (а человек думает что 7 ) отсюда и появилось 1+
...
Рейтинг: 0 / 0
Простая выборка с данными
    #39743006
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sossisson982183,
разве это будет работать, если пользователь заходил не все дни подряд, а были перерывы по 3-4 дня?

не важно сколько раз заходил count(distinct trunc (AUTH_DATE)) даст для одного дня 1

если были перерывы, то count не совпадет с к-вом дней за период

другой вопрос, учитывать только рабочие дни или календарные?

....
stax
...
Рейтинг: 0 / 0
Простая выборка с данными
    #39743025
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaximaXXL,

Дату начала и дату кончала - это уже вы сами додумали. В исходной постановке задачи у ТС про это нет ни слова. ;). Положим, период - плавающий. Первый пользователь логинился каждый день с первого по седьмое число. Второй - с десятого по шестнадцатое. Формально - оба логинились каждый день в течении недели. Но если ограничить период датами с шестого по двенадцатое, как предлагаете вы, то ни один пользователь не логинился семь дней подряд.
Понимаете, о чем я? ;)
Единственное, в чем с вами не поспоришь, так это то, что задача сформулирована очень размыто и нечетко. И каждый её решает, как понял. А что на самом деле нужно Т -
...
Рейтинг: 0 / 0
Простая выборка с данными
    #39743026
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щукина АннаMaximaXXL,

Дату начала и дату кончала - это уже вы сами додумали. В исходной постановке задачи у ТС про это нет ни слова. ;). Положим, период - плавающий. Первый пользователь логинился каждый день с первого по седьмое число. Второй - с десятого по шестнадцатое. Формально - оба логинились каждый день в течении недели. Но если ограничить период датами с шестого по двенадцатое, как предлагаете вы, то ни один пользователь не логинился семь дней подряд.
Понимаете, о чем я? ;)
Единственное, в чем с вами не поспоришь, так это то, что задача сформулирована очень размыто и нечетко. И каждый её решает, как понял. А что на самом деле нужно ТС-у - одному ему известно
...
Рейтинг: 0 / 0
Простая выборка с данными
    #39743034
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щукина Анна,

мы по разному понимаем
авторКак сделать запрос, который покажет кто из пользователей заходил каждый день в течении недели или месяца?
я считаю что надо показать пользователей которые логинились каждый день за конкретный период,
напр в октябре 2018 года

.....
stax
...
Рейтинг: 0 / 0
Простая выборка с данными
    #39743052
mama.said
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sossisson,

хорошо бы еще понимать в каком виде нужен аутпут

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
with dt as (
  select 1 as usr, to_date('01-01-2018', 'dd-mm-yyyy') as auth_date from dual union all
  select 1 as usr, to_date('01-01-2018', 'dd-mm-yyyy') as auth_date from dual union all
  select 2 as usr, to_date('01-01-2018', 'dd-mm-yyyy') as auth_date from dual union all
  select 1 as usr, to_date('02-01-2018', 'dd-mm-yyyy') as auth_date from dual union all
  select 3 as usr, to_date('01-01-2018', 'dd-mm-yyyy') as auth_date from dual union all
  select 1 as usr, to_date('03-01-2018', 'dd-mm-yyyy') as auth_date from dual
)
select * 
from dt
pivot (
  count(*) for auth_date in (to_date('01-01-2018', 'dd-mm-yyyy') as "01_jan_2018", to_date('02-01-2018', 'dd-mm-yyyy') as "02_jan_2018", to_date('03-01-2018', 'dd-mm-yyyy') as "03_jan_2018") 
)



Код: html
1.
2.
3.
4.
USR  01_jan_2018  02_jan_2018 03_jan_2018
1	      2	         1	     1
2	      1	         0           0
3	      1	         0           0
...
Рейтинг: 0 / 0
Простая выборка с данными
    #39743225
sossisson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mama.said,
Выборку делаю за год.
В общем, при помощи двух group by я могу добиться для каждого пользователя отображения того, сколько дней за год он логинился.
Проблема в том, что я хочу найти тех, кто без перерыва на отпуски и больничные работал. Вот для этого и хочу найти того, кто подряд 7-20-100 дней заходил на сервер.
...
Рейтинг: 0 / 0
Простая выборка с данными
    #39743229
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sossisson,

Вам уже все возможные случаи подсказали, как решать. Осталось только выбрать наиболее подходящий.
...
Рейтинг: 0 / 0
Простая выборка с данными
    #39743230
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sossissonПроблема в том, что я хочу найти тех, кто без перерыва на отпуски и больничные работал. Вот для этого и хочу найти того, кто подряд 7-20-100 дней заходил на сервер.7 дней подряд без отпуска это произвол!
...
Рейтинг: 0 / 0
Простая выборка с данными
    #39743243
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sossissonПроблема в том, что я хочу найти тех, кто без перерыва на отпуски и больничные работал.
а также без выходных и праздников, т.е 24/7/365.
так это можно без запроса получить - сервер БД
...
Рейтинг: 0 / 0
Простая выборка с данными
    #39743276
CN_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sossisson,

Проще написать функцию и не париться с запросом.
...
Рейтинг: 0 / 0
25 сообщений из 32, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Простая выборка с данными
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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