powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как сделать такой запрос (построить среднюю по биржевым данным)
4 сообщений из 4, страница 1 из 1
Как сделать такой запрос (построить среднюю по биржевым данным)
    #38484796
FB 2.1, dialect 3
Вот есть запрос к табличке, в которой содержатся данные свечек (Open, High, Close, Low и ID свечи):
Код: sql
1.
2.
3.
select avg(price_high) as AVG_VALUE 
from user_interval
where (id <= :ID) and (id > (:ID - 7))

он возвращает значение средней цены за период 7 по конкретной свечке с заданным ID.
Как получить таблицу со значениями средних по всем свечкам? Т.е. нужно перебрать все свечки в таблице и для каждой посчитать среднюю по какой-нибудь цене.
Написал вот так
Код: sql
1.
2.
3.
select um.id, um.price_high,
(select avg(price_high) from user_interval where (um.id <= :ID) and (um.id > (:ID - 7))) as AVG_VALUE
from user_interval um

но выдает фигню :D
...
Рейтинг: 0 / 0
Как сделать такой запрос (построить среднюю по биржевым данным)
    #38484800
Барабашка серверная,
Код: sql
1.
2.
3.
4.
select avg( <какая-нибудь цена> )
from  user_interval
where < не понял я тут: как ID свечи связан с ... периодом ?! >
group by id

А вообще - пример данных давай сюда и чего надо получить в итоге.
...
Рейтинг: 0 / 0
Как сделать такой запрос (построить среднюю по биржевым данным)
    #38484808
авторне понял я тут: как ID свечи связан с ... периодом ?!Период - это просто количество свечей, за которое считается средняя. Это тупо среднее арифметическое.
Есть свечка с ID = 10. Считаем среднее арифметическое цены у свечек с ID = 4, 5, 6, 7, 8, 9, 10.
Вот табличка с исходными данными:
ID PRICE1 1002 1103 1054 1155 1026 1107 1128 1059 10810 11611 10012 120
Средняя для свечи с ID = 10 и периодом 7 будет равна: (115 + 102 + 110 + 112 + 105 + 108 + 116) / 7 = 109.714
Эту процедуру делает первый запрос (см. корневое сообщение), но он возвращает единичное значение.

А надо, чтобы возвращалась табличка с ID свечей и значениями средних для этих свечей:
ID AVG... ...10 109.71411 107.571и т.д. и т.д.
...
Рейтинг: 0 / 0
Как сделать такой запрос (построить среднюю по биржевым данным)
    #38484869
Барабашка серверная,
Код: sql
1.
2.
3.
select t1.id, avg( 1.00*t2.price )
from t t1 join t t2 on t1.id - t2.id between 1 and 7
group by t1.id;

ЗЫ. в след. раз приводит не копипасты результатов, а СКРИПТЫ в виде insert-команд.
Вот так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
recreate table t (ID int, PRICE numeric(12,2)); commit;
insert into t(id, price) values(1,  100);
insert into t(id, price) values(2,  110);
insert into t(id, price) values(3,  105);
insert into t(id, price) values(4,  115);
insert into t(id, price) values(5,  102);
insert into t(id, price) values(6,  110);
insert into t(id, price) values(7,  112);
insert into t(id, price) values(8,  105);
insert into t(id, price) values(9,  108);
insert into t(id, price) values(10,  116);
insert into t(id, price) values(11,  100);
insert into t(id, price) values(12,  120);
commit;


ЗЗЫ. А еще заходи вот сюда , там плохому не учат.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как сделать такой запрос (построить среднюю по биржевым данным)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]