Найти сумму и среднее в одном запросе - PullRequest
0 голосов
/ 05 июля 2018

У меня есть запрос, который показывает сумму и среднее. Сумма имеет несколько сложных расчетов. Мой запрос почти как:

SELECT (SELECT a + b - c * d FROM master) AS sum,
       (SELECT a + b - c * d FROM master) / 5 AS avg
FROM master;

Как можно уменьшить код, поместив сумму (которую я уже рассчитал) в переменную (или каким-либо другим способом), чтобы найти среднее значение, используя ее.

Я использую Oracle SQL developer.

Ответы [ 3 ]

0 голосов
/ 05 июля 2018

вы можете использовать следующие

SELECT m.col as SUM, m.col/5 as AVG  
FROM (SELECT (a + b - c * d) col FROM master) m ;
0 голосов
/ 06 июля 2018

Я бы использовал

SELECT sum(term) as sum,
       avg(term) as avg
  FROM (SELECT (a + b - c * d) AS term FROM master);

'5' в вашем запросе - это количество строк, верно? Если нет, вы можете использовать

SELECT sum(term) as sum,
       sum(term)/count(*) as avg
  FROM (SELECT (a + b - c * d) AS term FROM master);
0 голосов
/ 05 июля 2018

Я думаю, что вы, вероятно, после чего-то вроде:

WITH sum_info AS (SELECT id, a + b - c * d total
                  FROM   master)
SELECT t.id,
       si.total,
       si.total/5 average
FROM   test t
       INNER JOIN sum_info si ON t.id = si.id;

Я предполагаю, что master.id является уникальным столбцом здесь. Без более подробной информации о вашей реальной проблеме (например, выборочных входных данных и ожидаемых выходных данных) очень трудно понять, отвечает ли это на самом деле ваш вопрос. Только вы можете помочь нам помочь вам ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...