Задать вопрос
des1roer
@des1roer
ученье - свет, а неученье - приятный полумрак

Postgres среднее из двух столбцов?

есть таблица для хранения значений. то есть одному анализу соответствуют несколько элементов со значениями
SELECT 
  elem_id,
  analiz_id,
  value
FROM 
  vgok_site.a_analiz_data 
  where analiz_id = 26;

7x3cMqx.png
как мне получить средний вес (elem_id(6).value)/(elem_id(5).value) ?
  • Вопрос задан
  • 545 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
@pesenka1
если я Вас правильно понял
select cast(x.number as real) / cast(y.number as real)
from
(
  SELECT value as number from a_analiz_data where id = 6
) x
join 
(
  SELECT value as number from a_analiz_data where id = 5
) y on 1=1
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
disc
@disc
веб-разработчик
Можно добавить их в условие запроса типа "WHERE analiz_id = 26 AND elem_id IN (5,6) " и получить значение через AVG()

SELECT 
  AVG(value)  
FROM 
  vgok_site.a_analiz_data 
  where analiz_id = 26 AND elem_id IN (5,6) ;
Ответ написан
@RodinUA
в Postgres есть чудесные оконные функции lag/lead
SELECT 
  elem_id,
  analiz_id,
  value as this_row_value,
  lag(value,1) OVER () as previous_row_value,
  value/lag(value,1) OVER ()
FROM 
   vgok_site.a_analiz_data 
WHERE
   analiz_id = 26
ORDER BY 
   elem_id;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы