我有一个查询,显示总和和平均值。该总和具有一些复杂的计算。我的查询几乎就像:
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。
答案 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);