|
|
|
Простая выборка с данными
|
|||
|---|---|---|---|
|
#18+
Есть лог входа пользователей в систему с информацией пользователь-дата входа. USERAUTH_DATE1'01-01-2018'2'01-01-2018'1'02-01-2018'3'01-01-2018'1'03-01-2018' Как сделать запрос, который покажет кто из пользователей заходил каждый день в течении недели или месяца? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2018, 12:58 |
|
||
|
Простая выборка с данными
|
|||
|---|---|---|---|
|
#18+
sossisson, count(distinct ) + group by + having ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2018, 13:02 |
|
||
|
Простая выборка с данными
|
|||
|---|---|---|---|
|
#18+
MaximaXXL, это понятно. Но я хотел выбрать именно, где 7 дней подряд люди есть в логах. Я так понимаю, что без аналитических функций здесь не обойтись, но вот как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2018, 16:10 |
|
||
|
Простая выборка с данными
|
|||
|---|---|---|---|
|
#18+
Тебе и ответили count(distinct )=7 count(distinct )=30(31) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2018, 16:12 |
|
||
|
Простая выборка с данными
|
|||
|---|---|---|---|
|
#18+
982183, разве это будет работать, если пользователь заходил не все дни подряд, а были перерывы по 3-4 дня? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2018, 16:15 |
|
||
|
Простая выборка с данными
|
|||
|---|---|---|---|
|
#18+
Задача тогда не та, которую ты написал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2018, 16:28 |
|
||
|
Простая выборка с данными
|
|||
|---|---|---|---|
|
#18+
982183, я же написал в первом посте "запрос, который покажет кто из пользователей заходил каждый день в течении недели или месяца" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2018, 16:33 |
|
||
|
Простая выборка с данными
|
|||
|---|---|---|---|
|
#18+
Поищи темы про объединение временных промежутков. Сформируешь данные по типу: Код: plaintext 1. 2. 3. Ну и выбираешь те записи, у которых разница между датами >= 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2018, 16:45 |
|
||
|
Простая выборка с данными
|
|||
|---|---|---|---|
|
#18+
sossisson, Напишите Ваш селект, или хотябы тестовые данные в формате with, а то пока не понятно что вообще Вы хотите Код: plsql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2018, 16:51 |
|
||
|
Простая выборка с данными
|
|||
|---|---|---|---|
|
#18+
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-е ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2018, 16:53 |
|
||
|
Простая выборка с данными
|
|||
|---|---|---|---|
|
#18+
sossissonв течении недели или месяцаа это течени е , все-таки, семь дней, семь суток или неделя. И течение месяца, это месяц или сколько-то там суток, в зависимости от ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2018, 16:54 |
|
||
|
Простая выборка с данными
|
|||
|---|---|---|---|
|
#18+
MaximaXXLsossisson, Напишите Ваш селект, или хотябы тестовые данные в формате with, а то пока не понятно что вообще Вы хотите Код: plsql 1. 2. 3. 4. 5. пользователь мог три дня ходить по сто раз, затем день перекурить и ещё четыре дня ходить по 10 раз. Будет ли это "семь дней подряд" в постановке автора? Вряд ли. А в решении вашим запросом? Запросто... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2018, 16:55 |
|
||
|
Простая выборка с данными
|
|||
|---|---|---|---|
|
#18+
sossisson, Думаю, вам надо пойти от обратного . Для выбранного интервала ищите даты когда данный пользователь не регистрировался. Если такой запрос вернет ноль записей , значит данный пользователь регистрировался каждый день. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2018, 16:57 |
|
||
|
Простая выборка с данными
|
|||
|---|---|---|---|
|
#18+
sossissonя же написал в первом посте "запрос, который покажет кто из пользователей заходил каждый день в течении недели или месяца" А выборку ты делаешь за неделю/месяц или за более длительный срок? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2018, 16:58 |
|
||
|
Простая выборка с данными
|
|||
|---|---|---|---|
|
#18+
Щукина Анна, Не совсем понятно при чем тут перекур в 1 день, если Вас смущает 1+ то это из за between который учитывает оба параметра. итого например между 07.01.2018 и 01.01.2018 разница 6 (а человек думает что 7 ) отсюда и появилось 1+ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2018, 17:02 |
|
||
|
Простая выборка с данными
|
|||
|---|---|---|---|
|
#18+
sossisson982183, разве это будет работать, если пользователь заходил не все дни подряд, а были перерывы по 3-4 дня? не важно сколько раз заходил count(distinct trunc (AUTH_DATE)) даст для одного дня 1 если были перерывы, то count не совпадет с к-вом дней за период другой вопрос, учитывать только рабочие дни или календарные? .... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2018, 17:18 |
|
||
|
Простая выборка с данными
|
|||
|---|---|---|---|
|
#18+
MaximaXXL, Дату начала и дату кончала - это уже вы сами додумали. В исходной постановке задачи у ТС про это нет ни слова. ;). Положим, период - плавающий. Первый пользователь логинился каждый день с первого по седьмое число. Второй - с десятого по шестнадцатое. Формально - оба логинились каждый день в течении недели. Но если ограничить период датами с шестого по двенадцатое, как предлагаете вы, то ни один пользователь не логинился семь дней подряд. Понимаете, о чем я? ;) Единственное, в чем с вами не поспоришь, так это то, что задача сформулирована очень размыто и нечетко. И каждый её решает, как понял. А что на самом деле нужно Т - ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2018, 17:48 |
|
||
|
Простая выборка с данными
|
|||
|---|---|---|---|
|
#18+
Щукина АннаMaximaXXL, Дату начала и дату кончала - это уже вы сами додумали. В исходной постановке задачи у ТС про это нет ни слова. ;). Положим, период - плавающий. Первый пользователь логинился каждый день с первого по седьмое число. Второй - с десятого по шестнадцатое. Формально - оба логинились каждый день в течении недели. Но если ограничить период датами с шестого по двенадцатое, как предлагаете вы, то ни один пользователь не логинился семь дней подряд. Понимаете, о чем я? ;) Единственное, в чем с вами не поспоришь, так это то, что задача сформулирована очень размыто и нечетко. И каждый её решает, как понял. А что на самом деле нужно ТС-у - одному ему известно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2018, 17:49 |
|
||
|
Простая выборка с данными
|
|||
|---|---|---|---|
|
#18+
Щукина Анна, мы по разному понимаем авторКак сделать запрос, который покажет кто из пользователей заходил каждый день в течении недели или месяца? я считаю что надо показать пользователей которые логинились каждый день за конкретный период, напр в октябре 2018 года ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2018, 18:01 |
|
||
|
Простая выборка с данными
|
|||
|---|---|---|---|
|
#18+
sossisson, хорошо бы еще понимать в каком виде нужен аутпут Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Код: html 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2018, 18:41 |
|
||
|
Простая выборка с данными
|
|||
|---|---|---|---|
|
#18+
mama.said, Выборку делаю за год. В общем, при помощи двух group by я могу добиться для каждого пользователя отображения того, сколько дней за год он логинился. Проблема в том, что я хочу найти тех, кто без перерыва на отпуски и больничные работал. Вот для этого и хочу найти того, кто подряд 7-20-100 дней заходил на сервер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2018, 07:45 |
|
||
|
Простая выборка с данными
|
|||
|---|---|---|---|
|
#18+
sossisson, Вам уже все возможные случаи подсказали, как решать. Осталось только выбрать наиболее подходящий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2018, 07:57 |
|
||
|
Простая выборка с данными
|
|||
|---|---|---|---|
|
#18+
sossissonПроблема в том, что я хочу найти тех, кто без перерыва на отпуски и больничные работал. Вот для этого и хочу найти того, кто подряд 7-20-100 дней заходил на сервер.7 дней подряд без отпуска это произвол! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2018, 07:58 |
|
||
|
Простая выборка с данными
|
|||
|---|---|---|---|
|
#18+
sossissonПроблема в том, что я хочу найти тех, кто без перерыва на отпуски и больничные работал. а также без выходных и праздников, т.е 24/7/365. так это можно без запроса получить - сервер БД ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2018, 08:54 |
|
||
|
Простая выборка с данными
|
|||
|---|---|---|---|
|
#18+
sossisson, Проще написать функцию и не париться с запросом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2018, 10:03 |
|
||
|
Простая выборка с данными
|
|||
|---|---|---|---|
|
#18+
sossisson, Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2018, 10:27 |
|
||
|
Простая выборка с данными
|
|||
|---|---|---|---|
|
#18+
sossisson, RTFM start_of_group Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2018, 10:30 |
|
||
|
Простая выборка с данными
|
|||
|---|---|---|---|
|
#18+
CN_1Проще написать функцию и не париться с запросом.Знание одного языка не предполагает возможность сравнивать с незнакомым языком. Знание в должной степени двух языков декларативного и императивного для данной задачи должно отдавать предпочтение декларативному. Остается третий вариант, не отягощающий принятие заключений о "проще" - незнание ни sql, ни plsql. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2018, 11:00 |
|
||
|
Простая выборка с данными
|
|||
|---|---|---|---|
|
#18+
sossissonmama.said, Выборку делаю за год. В общем, при помощи двух group by я могу добиться для каждого пользователя отображения того, сколько дней за год он логинился. Проблема в том, что я хочу найти тех, кто без перерыва на отпуски и больничные работал. Вот для этого и хочу найти того, кто подряд 7-20-100 дней заходил на сервер. Я надеюсь Вы из отдела кадров и хотите отправить человека в отпуск иначе это нарушение конституции Похоже Вам надо что-то вроде такого, но постановка оставляет желать лучшего Код: 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. 26. 27. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2018, 11:38 |
|
||
|
Простая выборка с данными
|
|||
|---|---|---|---|
|
#18+
MaximaXXLsossissonmama.said, Выборку делаю за год. В общем, при помощи двух group by я могу добиться для каждого пользователя отображения того, сколько дней за год он логинился. Проблема в том, что я хочу найти тех, кто без перерыва на отпуски и больничные работал. Вот для этого и хочу найти того, кто подряд 7-20-100 дней заходил на сервер. Я надеюсь Вы из отдела кадров и хотите отправить человека в отпуск иначе это нарушение конституции Похоже Вам надо что-то вроде такого, но постановка оставляет желать лучшего Код: 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. 26. 27. Столько много лишних телодвижений... Вот решение из разряда "Первое, что пришло в голову", на ваших тестовых данных): Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2018, 12:13 |
|
||
|
|

start [/forum/topic.php?all=1&fid=52&tid=1883077]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
143ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 221ms |
| total: | 467ms |

| 0 / 0 |
