2015-03-11 4 views
0

У меня есть запрос, который мне нужно выполнить в SQLite, что, вероятно, довольно просто, но я не могу найти решение.SQLite query Join

Я две таблицы формируется как таковой:

table_1 
value | timestamp 
x1 | 0 
x2 | 1 
x3 | 2 
x4 | 3 
x5 | 4 

    table_2 
start | end 
0  | 1 
2  | 4 

Я хочу, чтобы вернуть результат, который выглядит как:

start | end |  computed_value 
0  | 1 | avg(x1,x2) * (1 - 0) 
2  | 4 | avg(x3,x4,x5) * (4 - 2) 

Где ср (x1, x2) фактические средние значения x1 и х2. Как я могу выполнить эту задачу?

Заранее благодарен!

+0

Итак, ваши ожидаемые результаты равны 0,5 и 6? Вам нужно использовать 'group by' и' avg' для выполнения этого ... – sgeddes

+0

мои ожидаемые результаты: avg (x1, x2) * 1 и avg (x3, x4, x5) * 2. Я не дал значений для x1 , x2, x3 ... и т.д.. –

+0

Вы хотите получить результат «varchar» как это конкретное выражение (не оценивается)? Или ваш столбец 'value' на самом деле является числовым, и вы хотите, чтобы выражение было оценено? – sgeddes

ответ

1

Предполагая, что я понять ваш вопрос правильно и значение столбца не varchar, а numeric, вы можете сделать это с join, используя avg() агрегат:

select t2.start, t2.en, 1.0*avg(t1.val)*(t2.en-t2.start) 
from table_2 t2 
    inner join table_1 t1 on t1.ts between t2.start and t2.en 
group by t2.start, t2.en 

Вы можете или не может необходимо 1.0* с sqlite - старые привычки из других баз данных ...

+0

спасибо, я понял! –