我有一个查询结果,格式如下。
Price Quarter
80 Q1
40 Q2
我需要计算%值并需要显示' NA'对于Q1和2需要显示Q2
期望的结果是
Price Quarter %Value
80 Q1 NA
40 Q2 2=(80/40)
我将如何获得所需的结果?
答案 0 :(得分:0)
嗯。您的结果非常具体。以下可能是您想要的:
select price, quarter,
(case when quarter = 'Q1' then NULL
else value * 1.0 / sum(value) over ()
end) as col
from q;
答案 1 :(得分:0)
表格两个相邻行中值的计算函数(按某种顺序)的任何问题都可以通过将表连接到自身来回答,其中连接基于“previous”值。有关说明,请参阅我的running totals示例。
您的代码看起来像这样。您提供的数据不足以提供完整的答案(没有年份,没有识别密钥),但我希望这可以帮助您入门。
select Q.price, Q.quarter, Q.value/P.value as '%value'
from (
select a.quarter, a.value, max(b.quarter) as prior
from T as a left join T as b
on a.quarter > b.quarter
group by a.price, a.quarter
) as Q
join T as P -- prior
on Q.prior = P.quarter