|
Запрос с lag, nullif, row_number()
|
|||
---|---|---|---|
#18+
Нужно создать запрос : нужно вернуть на каждый state(1,0,2) по одной записи на дату date_from , работая со строками в таком порядке, что 1 это статус подключен , 2 это блокировка , 0 это отключение, следовательно перед 0 было 1, перед 1 было 2 , т е смотреть на предыдущую дату, сравнивая их , id это Id человека должны быть lag. nullif. row_number() и case Допустим на 01.08.2020 дата последнего Подключения - 01.08.2020, Отключения - 08.04.2020, Блокировки - 27.07.2020 Есть данные DATE_FROM DATE_UNTIL STATE ID 23.03.2020 07.04.2020 1 2 08.04.2020 08.04.2020 0 2 10.04.2020 31.05.2020 1 2 01.06.2020 11.07.2020 1 2 12.07.2020 26.07.2020 1 2 27.07.2020 29.07.2020 2 2 30.07.2020 31.07.2020 2 2 01.08.2020 15.09.2020 1 2 16.09.2020 31.07.2020 1 2 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2021, 13:00 |
|
Запрос с lag, nullif, row_number()
|
|||
---|---|---|---|
#18+
del ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2021, 13:46 |
|
Запрос с lag, nullif, row_number()
|
|||
---|---|---|---|
#18+
123йй, ? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2021, 13:58 |
|
Запрос с lag, nullif, row_number()
|
|||
---|---|---|---|
#18+
dn33369, для 2 почему не 30.07.2020 ? ...... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2021, 14:11 |
|
Запрос с lag, nullif, row_number()
|
|||
---|---|---|---|
#18+
Stax, всё верно, перепутала ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2021, 14:12 |
|
Запрос с lag, nullif, row_number()
|
|||
---|---|---|---|
#18+
dn33369, Код: plsql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2021, 14:31 |
|
Запрос с lag, nullif, row_number()
|
|||
---|---|---|---|
#18+
123йй, нужно именно с использованием функций, которые перечислены lag nullif row_number ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2021, 14:37 |
|
Запрос с lag, nullif, row_number()
|
|||
---|---|---|---|
#18+
dn33369, Код: plsql 1.
может все же 27.07.2020 ? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2021, 15:00 |
|
Запрос с lag, nullif, row_number()
|
|||
---|---|---|---|
#18+
123йй, мне главное запрос, чтобы полный был , а видимо да , будет 27 число ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2021, 15:22 |
|
Запрос с lag, nullif, row_number()
|
|||
---|---|---|---|
#18+
dn33369следовательно перед 0 было 1, перед 1 было 2 , т е смотреть на предыдущую дату, сравнивая их , Допустим на 01.08.2020 дата последнего Подключения (1) - 01.08.2020 , Отключения (0)- 08.04.2020 , Блокировки (2)- 27.07.2020 давайте уже как написано в лабе, а не то что вы придумали ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2021, 15:37 |
|
Запрос с lag, nullif, row_number()
|
|||
---|---|---|---|
#18+
123йй, там так и написано, запрос должен вернуть 3 даты по каждому state и на каждое Id ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2021, 15:39 |
|
Запрос с lag, nullif, row_number()
|
|||
---|---|---|---|
#18+
dn33369, опять гадаем. автор27.07.2020 29.07.2020 2 2 30.07.2020 31.07.2020 2 2 27 или 30 ? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2021, 15:44 |
|
Запрос с lag, nullif, row_number()
|
|||
---|---|---|---|
#18+
123йй, 27 число , так дальше все время было 2 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2021, 15:46 |
|
Запрос с lag, nullif, row_number()
|
|||
---|---|---|---|
#18+
dn33369 123йй, нужно именно с использованием функций, которые перечислены lag nullif row_number после блокировки может быть подключение без отключки? 30.07.2020 31.07.2020 2 2 01.08.2020 15.09.2020 1 2 ps все ф-ции сразу без явного бреда ... мож надо нескольео решений c разными ф-циями ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2021, 16:14 |
|
Запрос с lag, nullif, row_number()
|
|||
---|---|---|---|
#18+
Stax, получается человек может как блокировать, так и подключать или вовсе отключать значит с функцией lag только типо так дата дата дата state 5/01/2020 null null 0 null 14/10/2020 null 1 null null 20/02/2020 2 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2021, 16:17 |
|
Запрос с lag, nullif, row_number()
|
|||
---|---|---|---|
#18+
dn33369 123йй, там так и написано, запрос должен вернуть 3 даты по каждому state и на каждое Id Но не сказано при LAG, NULLIF, ROWNUM. Тут самый банальный пивот: Код: 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. 28. 29. 30. 31.
Или: Код: 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.
SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2021, 16:28 |
|
Запрос с lag, nullif, row_number()
|
|||
---|---|---|---|
#18+
Перепутал. Блокировка - 2: Код: 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.
SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2021, 16:34 |
|
Запрос с lag, nullif, row_number()
|
|||
---|---|---|---|
#18+
SY, нужно обязательно с lag потому что нужно брать предыдущее значение даты для каждого state когда оно было последним и еще даты как-то сравнивать ( как написано ) типо так дата дата дата state 5/01/2020 null null 0 null 14/10/2020 null 1 null null 20/02/2020 2 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2021, 16:38 |
|
Запрос с lag, nullif, row_number()
|
|||
---|---|---|---|
#18+
dn33369 Stax, получается человек может как блокировать, так и подключать или вовсе отключать значит с функцией lag только типо так дата дата дата state 5/01/2020 null null 0 null 14/10/2020 null 1 null null 20/02/2020 2 я считал что его (человека/ид) блокируют, а не он блокирует для решения столько ф-ций не надо я начал что-то лепить шоб все ф-ции зацепить, но получается что кто-то явно лишний ...... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2021, 16:42 |
|
Запрос с lag, nullif, row_number()
|
|||
---|---|---|---|
#18+
dn33369, автордолжны быть lag. nullif. row_number() и case Код: plsql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2021, 16:44 |
|
Запрос с lag, nullif, row_number()
|
|||
---|---|---|---|
#18+
123йй, у меня вывело 2 одинаковые даты 01.08 01.08 и 31.07 получается надо еще state вывести и id пользователей же много ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2021, 16:52 |
|
Запрос с lag, nullif, row_number()
|
|||
---|---|---|---|
#18+
123йй, и возможно где Partition nu нужно заменить на id , ну т е у каждого человека есть Id надо на каждого это учесть + алиасы столбцов хоть какие-то если можно) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2021, 16:58 |
|
Запрос с lag, nullif, row_number()
|
|||
---|---|---|---|
#18+
dn33369 id пользователей же много напишите group by авторвозможно где Partition nu нужно заменить на id , возможно. Вам никто не мешает проверить id, nu ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2021, 17:38 |
|
Запрос с lag, nullif, row_number()
|
|||
---|---|---|---|
#18+
dn33369 нужно обязательно с lag потому что нужно брать предыдущее значение даты для каждого state когда оно было последним и еще даты как-то сравнивать ( как написано ) нужно брать предыдущее значение даты для каждого state != нужно обязательно с lag. Можно просто в лоб: Код: 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. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53.
А с lag не получится ибо аналитика на аналитику в одном флаконе не работает. Можно через иерархию, recursive subquery factoring или match_recognize. Для match_recognize ищем первый в обратном порядке DATE_FROM подключение за которым следует >= 0 "не блокировка" затем блокировка затем >= 0 "не отключение" затем отключение: Код: 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. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49.
SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2021, 16:32 |
|
|
start [/forum/topic.php?fid=52&fpage=28&tid=1880548]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 155ms |
0 / 0 |