|
Данные нескольких записей в запросе
|
|||
---|---|---|---|
#18+
Есть следующая таблица: Дата торгов Torg_date, Код фьючерса Name, Показатель R, Показатель N Необходимо рассчитать показатель N для каждой записи: Nk=ln(Rk(i)-Rk(i-2), где i - порядковый номер торгового дня Не знаю как взять значения Rk(i-2) при расчете. В таблице хранятся данные о разных фьючерсах, каждый торговался за день один раз Таблица отсортирована по дате торгов Как можно рассчитать N? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2011, 15:05 |
|
Данные нескольких записей в запросе
|
|||
---|---|---|---|
#18+
Проще надо быть :) пример заполненной таблицы покажи. Torg_date минус какая-то постоянная дата не подойдет? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2011, 15:27 |
|
Данные нескольких записей в запросе
|
|||
---|---|---|---|
#18+
Пример заполненной таблицы Torg_date Name N R 05.02.1996 21057–1602 0.00 0.00153 05.02.1996 22020–1602 0.00 0.00162 05.02.1996 22020–1503 0.00 0.00159 05.02.1996 22020–1904 0.00 0.00156 06.02.1996 21057–1602 0.00 0.00150 06.02.1996 22020–1602 0.00 0.00159 06.02.1996 22020–1503 0.00 0.00159 06.02.1996 22020–1904 0.00 0.00130 07.02.1996 21057–1602 0.00 0.00152 07.02.1996 22020–1602 0.00 0.00160 07.02.1996 22020–1503 0.00 0.00159 07.02.1996 22020–1904 0.00 0.00131 08.02.1996 21057–1602 0.00 0.00142 08.02.1996 22020–1602 0.00 0.00155 08.02.1996 22020–1503 0.00 0.00154 08.02.1996 22020–1904 0.00 0.00124 09.02.1996 21057–1602 0.00 0.00143 09.02.1996 22020–1602 0.00 0.00156 09.02.1996 22020–1503 0.00 0.00157 09.02.1996 22020–1904 0.00 0.00124 Dima TTorg_date минус какая-то постоянная дата не подойдет? Нет По-другому объяснить что нужно не смог) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2011, 15:45 |
|
Данные нескольких записей в запросе
|
|||
---|---|---|---|
#18+
alebezh, а результаты? Например, для записи Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2011, 17:25 |
|
Данные нескольких записей в запросе
|
|||
---|---|---|---|
#18+
tangliralebezh, а результаты? Например, для записи Код: plaintext
N будет равняться LOG(0.00152/0.00153), где 0.00153 - значение R в торговый день, который был на два дня раньше: Torg_date Name N R 05.02.1996 21057–1602 0.00 0.00153 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2011, 18:10 |
|
Данные нескольких записей в запросе
|
|||
---|---|---|---|
#18+
alebezh, Код: plaintext 1. 2. 3. 4. 5. 6. 7.
алгоритм не мой! ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2011, 18:42 |
|
Данные нескольких записей в запросе
|
|||
---|---|---|---|
#18+
alextashk, что-то у вас страшное вышло, да ещё и с подзапросами. Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2011, 19:12 |
|
Данные нескольких записей в запросе
|
|||
---|---|---|---|
#18+
И что за загадочная таблица "w" в выражении с логарифмом? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2011, 19:14 |
|
Данные нескольких записей в запросе
|
|||
---|---|---|---|
#18+
А как заполнить значениями из курсора саму таблицу? В курсоре нет первых записей, потому что для них нет предыдущих, а в таблице должны быть все записи, пусть и с 0 значениями N ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2011, 17:37 |
|
Данные нескольких записей в запросе
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2011, 18:14 |
|
Данные нескольких записей в запросе
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3.
tangliralextashk, что-то у вас страшное вышло, да ещё и с подзапросами. И легче читается, и работать быстрее будет. Я же писал - не мой алгоритм, но спасибо за упрощение алгоритма! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2011, 18:15 |
|
Данные нескольких записей в запросе
|
|||
---|---|---|---|
#18+
tanglir, alextashk Большое спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2011, 19:07 |
|
Данные нескольких записей в запросе
|
|||
---|---|---|---|
#18+
Значения нужно выбирать по номеру записи, а не по Torg_data-2. Например если рассчитывать для 8 февраля, и нет данных за 6 февраля, то нужно взять значение за 5 февраля: 05.02.1996 21057–1602 0.00 0.00153 07.02.1996 21057–1602 0.00 0.00152 08.02.1996 21057–1602 0.00 0.00142 Как это можно сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2011, 20:28 |
|
Данные нескольких записей в запросе
|
|||
---|---|---|---|
#18+
alebezh, Код: plaintext 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2011, 17:05 |
|
Данные нескольких записей в запросе
|
|||
---|---|---|---|
#18+
Нет, вот так SELECT x.Torg_date, x.Name, x.R, IIF(ISNULL(y.R) OR y.R = 0, 0, LOG(x.R/y.R))+000000.00000 AS N; FROM tablic x; LEFT OUTER JOIN (SELECT Torg_date, Name, R, (SELECT MAX(Torg_date) FROM tablic z; WHERE z.Torg_date <= t.Torg_date - 2 .AND. z.Name = t.Name) AS parent_date; FROM tablic t) y ; ON y.Torg_date = x.parent_date AND y.Name = x.Name; INTO CURSOR listOut ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2011, 17:07 |
|
Данные нескольких записей в запросе
|
|||
---|---|---|---|
#18+
А по-хорошему надо бы ввести в таблицу поле "номер", в котором будет счётчик (для каждого NAME своя последовательность), и делать джойн не по дате+2, а по номеру+2; все остальные решения будут гораздо медленнее имхо. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2011, 17:13 |
|
Данные нескольких записей в запросе
|
|||
---|---|---|---|
#18+
Этот запрос вызывает ошибку "SQL: Error correlating fields": Код: plaintext 1. 2. 3. 4. 5. 6. 7.
Сделал, как предлагал tanglir: Код: plaintext 1. 2.
Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2011, 22:21 |
|
Данные нескольких записей в запросе
|
|||
---|---|---|---|
#18+
alebezh, tanglir для каждого NAME своя последовательность А вы даты пронумеровали. И что получится в последней строке, если у вас будут такие данные Torg_dateName2011-01-0112011-01-0122011-01-0212011-01-0222011-01-0312011-01-0412011-01-0512011-01-0612011-01-062? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2011, 06:59 |
|
Данные нескольких записей в запросе
|
|||
---|---|---|---|
#18+
tanglir, Каждой дате присвоен свой номер, т.е.: Код: plaintext 1. 2. 3. 4.
Работает) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2011, 17:51 |
|
|
start [/forum/topic.php?fid=41&fpage=67&tid=1584071]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 289ms |
total: | 431ms |
0 / 0 |