次の内容がトピックから外れている、明確でない、具体的すぎる、または複雑すぎて理解できない場合はお知らせください。以下は、記述し、理解し、解決するための課題だと思います。
CIF=cost、insurance、freight(基本的には輸入価格)
入力テーブル (インポート) の単純化されたバージョンは次のようになります。
ここに画像の説明を入力してください。 したがって、1 月から 6 月までは値 1 が SixMonthPeriod 列に割り当てられ、残りの月には値 2 が割り当てられます。
次に、6 期間の単価を計算したいので、
select SixMonthPeriod, ProductDescrip, Sum(weight), Sum (CIF), (Sum (CIF))/(Sum(weight)) as UnitPrice
from Import
group by SixMonthPeriod, ProductDescrip;
これは問題ありませんが、ラグ (オラクル分析関数) を使用する必要がある各製品 (6 か月間) のインフレを計算したいと考えています。6 か月の期間を固定する必要があります。したがって、特定の製品の前の期間が欠落している場合、単価はゼロになります。各商品のインフレ計算を再開/開始したい。単価とインフレの方程式は、それぞれ次のようになります。
単価 = (6 か月間の合計 (重量))/(6 か月間の合計 (CIF)) インフレ = (現在の単価 - 以前の単価)/(以前の単価)
次の SQL を使用して、製品ごとに 6 か月間のインフレを計算します。ここで、製品ごとに計算が再び開始されます。
select Yr, SixMthPeriod, Product, UnitPrice, LagUnitPrice, ((UnitPrice -LagUnitPrice)/LagUnitPrice) as inflation
from (select Year as Yr, SixMonthPeriod as SixMthPeriod,
ProductDescrip as product, (Sum (CIF))/(Sum(weight)) as UnitPrice,
lag((Sum (CIF))/(Sum(weight)))
over (partition by ProductDescrip order by YEAR, SixMonthPeriod) as LagUnitPrice
From Import
group by Year, SixMonthPeriod, ProductDescrip)
問題は、インフレ期間が固定されていないことです。
たとえば、結果として次のようになります。
ここに画像の説明を入力してください 最初の 2 行は問題ありません。これらは私の最初の行であるため、null 値があるはずです。したがって、LagUnitPrice とインフレはありません。
3 行目には、LagUnitPrice として 0.34 が使用されているが、実際にはゼロであるという問題があります (2016 年の期間では、製品の大麦の SixMthPeriod=1 です)。オラクルの分析関数は、欠落している行を考慮しません (たとえば、2016 年の期間では、製品の大麦の SixMthPeriod=1 の場合)。
この問題を解決するにはどうすればよいですか (理解できる場合)。
私は 96 行あるので、ファイルを Excel にエクスポートし、Excel の数式を使用してこれらの例外を修正できます。