在单个查询中查找总和和平均值

时间:2018-07-05 11:27:52

标签: sql oracle

我有一个查询,显示总和和平均值。该总和具有一些复杂的计算。我的查询几乎就像:

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 :(得分:1)

我认为您可能正在追求类似的东西:

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在这里是唯一列。如果没有关于您实际问题的更多详细信息(例如样本输入数据和预期输出数据),很难知道这是否能真正回答您的问题。只有您可以帮助我们来帮助您...

答案 1 :(得分:0)

您可以使用以下

SELECT m.col as SUM, m.col/5 as AVG  
FROM (SELECT (a + b - c * d) col FROM master) m ;

答案 2 :(得分:0)

我会用

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);