|
|
|
Рекурсивный запрос или аналитика?
|
|||
|---|---|---|---|
|
#18+
Добрый день! Возникла необходимость написать запрос (view) к табличке, в которой между полями установлена зависимость. Таблица из 4х колонок. Код: sql 1. 2. 3. 4. 5. 6. Правила заполнения показателей: Показатель1 (Sum1): равно значению Показателя3 на предшествующую Дату (если не было то пусто); Показатель2 (Sum2): значение которое нам известно на Дату; Показатель3 (Sum3): Показатель1+Показатель2 Нам известны только пары значений: дата и показатель2 (см WITH ниже). нужно получить запрос, показывающий таблицу выше. Также у меня есть табличка-справочник dates, которая содержит все последовательные календарные даты в поле ddate Унылая попытка№1: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Подскажите пожалуйста какой подход нужно использовать в подобных задачах и очень помогут примеры. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2017, 16:01 |
|
||
|
Рекурсивный запрос или аналитика?
|
|||
|---|---|---|---|
|
#18+
(o-O), a чем, собственно, lag вам так уныл? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2017, 16:20 |
|
||
|
Рекурсивный запрос или аналитика?
|
|||
|---|---|---|---|
|
#18+
(o-O)какой подход нужно использоватьПоказатели 1 и 3 это sum(Показатель2) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2017, 16:21 |
|
||
|
Рекурсивный запрос или аналитика?
|
|||
|---|---|---|---|
|
#18+
Допустим я использую lag для определения 1го показателя, который является предшествующим значением показателя 3, который в свою очередь завязан на показатель 1. Смущает зависимость между показателями 1 и 3, хотя эта зависимость на разные даты.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2017, 16:23 |
|
||
|
Рекурсивный запрос или аналитика?
|
|||
|---|---|---|---|
|
#18+
(o-O), выходит так, что показатель 3 - накапливающая сумма Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2017, 16:35 |
|
||
|
Рекурсивный запрос или аналитика?
|
|||
|---|---|---|---|
|
#18+
Унылый lag(o-O), выходит так, что показатель 3 - накапливающая сумма Код: plsql 1. Соответственно показатель1 - накапливающая сумма за вычетом показателя 2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2017, 16:37 |
|
||
|
Рекурсивный запрос или аналитика?
|
|||
|---|---|---|---|
|
#18+
(o-O), если будет несколько "показатель2" за одну дату, какой ожидаете результат? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2017, 17:03 |
|
||
|
Рекурсивный запрос или аналитика?
|
|||
|---|---|---|---|
|
#18+
На одну дату - один показатель2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2017, 17:05 |
|
||
|
Рекурсивный запрос или аналитика?
|
|||
|---|---|---|---|
|
#18+
(o-O), можно примерно так: Код: plsql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2017, 17:25 |
|
||
|
Рекурсивный запрос или аналитика?
|
|||
|---|---|---|---|
|
#18+
j2k(o-O), можно примерно так: Код: plsql 1. 2. 3. 4. 5. 6. Спасибо, с подходом накапливающих сумм примерно разобрался. А получится ли использовать данный подход, если в исходные данные ввести валюту в отдельную колнку и выполнять эти расчеты в разрезе валюты? Например в примере выше -2000 будем иметь валюту доллар, а -500 евро. Соответственно показатели 1 и 3 должны считаться в разрезе своей валюты показателя2. Попробовал добавить partition by но не помогло. По всей видимости при вычислении sum1 и sum3 нужно «протягивать» валюту показателя2 во вложенном запросе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2017, 14:32 |
|
||
|
Рекурсивный запрос или аналитика?
|
|||
|---|---|---|---|
|
#18+
(o-O), Ничего не понял из вашего объяснения. Приведите конкретный пример чего хотите получить на выходе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2017, 16:31 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39413857&tid=1886328]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
160ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 191ms |
| total: | 414ms |

| 0 / 0 |
