|
Как выгрузить определенные данные за период, где они засветились минимум 1 секунду
|
|||
---|---|---|---|
#18+
Выгрузить все terminal_device_id, у которых тарифный план Псков - Тарифище 082018 (МАСС) (SCP) за февраль месяц был хотя бы 1 секунду ! фишка в том что бы учитывались id и тех кто активных, т.е. у кого date_to = null, не закрыты допустим они могли подключиться в декабре и по сей день сидеть на этом плане , мне нужно и таких учитывать А у меня получается только учитывать либо строго за февраль месяц , тех у кого как то меняется план или просто у кого он уже есть, но при этом еще только тех, кто закрыл этот тарифный план в феврале, а мне нужно еще активных учитывать Либо опять же получается всех учитываю и тех кто подключился до февраля и тех кто после февраля с этим тарифом, но уже не активных все равно, тк они закрыли этот план и перешли на другой вот код select td.terminal_device_id, td.date_from, td.date_to, tp.tariff_plan_name, tp.tariff_plan_id from cust.terminal_device td inner join rd.tariff_plan tp on td.tariff_plan_id = tp.tariff_plan_id inner join cust.terminal_device td2 on td.terminal_device_id=td2.terminal_device_id where td2.date_to between to_date('01.02.2020 00:00:00', 'dd.mm.yyyy hh24:mi:ss') and to_date ('29.02.2020 23.59.59', 'dd.mm.yyyy hh24:mi:ss') and td.date_to >= td2.date_from+1/86400 and tp.tariff_plan_name = 'Псков - Тарифище 082018 (МАСС) (SCP)' and exists (select td3.date_from from cust.terminal_device td3 where td.terminal_device_id=td3.terminal_device_id and td3.date_to is null ); ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2020, 10:33 |
|
Как выгрузить определенные данные за период, где они засветились минимум 1 секунду
|
|||
---|---|---|---|
#18+
masir0n, подсказали что с помощью greatest и least, пока что не совсем понимаю как ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2020, 12:13 |
|
Как выгрузить определенные данные за период, где они засветились минимум 1 секунду
|
|||
---|---|---|---|
#18+
masir0n, Вам надо выбирать строки у которых пересекаются два интервала/диапазона февраль to_date('01.02.2020 00:00:00', 'dd.mm.yyyy hh24:mi:ss') and to_date ('29.02.2020 23.59.59') и date_from and nvl(date_to,date '9999-12-30') зы если не получится, нарисую ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2020, 12:44 |
|
Как выгрузить определенные данные за период, где они засветились минимум 1 секунду
|
|||
---|---|---|---|
#18+
masir0n masir0n, подсказали что с помощью greatest и least , пока что не совсем понимаю как Код: 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.
ps хотя б я пользовал <= and ... >= ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2020, 12:59 |
|
Как выгрузить определенные данные за период, где они засветились минимум 1 секунду
|
|||
---|---|---|---|
#18+
Stax, Покажите пожалуйста , как реализовать Не совсем ясно, зачем заменять ноль ( если он есть ) на '9999-12-30, что бы могли его захватить при запросе ? Попробовал, вроде как ничего не изменилось ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2020, 13:06 |
|
Как выгрузить определенные данные за период, где они засветились минимум 1 секунду
|
|||
---|---|---|---|
#18+
Stax, Сейчас попробую ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2020, 13:08 |
|
Как выгрузить определенные данные за период, где они засветились минимум 1 секунду
|
|||
---|---|---|---|
#18+
Или так: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2020, 13:13 |
|
Как выгрузить определенные данные за период, где они засветились минимум 1 секунду
|
|||
---|---|---|---|
#18+
masir0n Stax, Покажите пожалуйста , как реализовать Не совсем ясно, зачем заменять ноль ( если он есть ) на '9999-12-30, что бы могли его захватить при запросе ? Попробовал, вроде как ничего не изменилось авторт.е. у кого date_to = null , не закрыты можно и без nvl, но тогда ... OR is null ... .... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2020, 13:26 |
|
Как выгрузить определенные данные за период, где они засветились минимум 1 секунду
|
|||
---|---|---|---|
#18+
Stax, написал вот такой код , вроде все получилось, большое спасибо select td.terminal_device_id, td.date_from, td.date_to, tp.tariff_plan_name, tp.tariff_plan_id from cust.terminal_device td inner join rd.tariff_plan tp on td.tariff_plan_id = tp.tariff_plan_id * where greatest(td.date_from ,date '2020-02-02')<= least(nvl( td.date_to, date'3333-12-31'), to_date ('29.02.2020 23.59.59', 'dd.mm.yyyy hh24:mi:ss')) and tp.tariff_plan_name = 'Псков - Тарифище 082018 (МАСС) (SCP)' Но, не могли бы пояснить как именно это все работает вот в этой строке *, хочу понять как запрос выполняется ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2020, 13:32 |
|
Как выгрузить определенные данные за период, где они засветились минимум 1 секунду
|
|||
---|---|---|---|
#18+
masir0n как именно это все работает вот в этой строке я ж писал авторВам надо выбирать строки у которых пересекаются два интервала/диапазона одно из уcловий пересечения интервалов (по разному можно) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
не я советовал "подсказали что с помощью greatest и least" просто привел пример c greatest и least ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2020, 13:52 |
|
Как выгрузить определенные данные за период, где они засветились минимум 1 секунду
|
|||
---|---|---|---|
#18+
Stax Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Попадание в интервал от START до FINISH очень хорошо описывается изящным условием Код: sql 1. 2.
( > или >= и < или <= отрегулируйте по вашей задаче) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2020, 14:21 |
|
Как выгрузить определенные данные за период, где они засветились минимум 1 секунду
|
|||
---|---|---|---|
#18+
Stax, Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2020, 14:28 |
|
Как выгрузить определенные данные за период, где они засветились минимум 1 секунду
|
|||
---|---|---|---|
#18+
SQL*Plus, Вот как, спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2020, 14:28 |
|
|
start [/forum/topic.php?fid=52&fpage=50&tid=1881419]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 291ms |
total: | 426ms |
0 / 0 |