販売実績額テーブル 地域名 月 製品名 売上額 ------ -- ------ ------ 日本 11 ビデオ 100 日本 11 テレビ 40 日本 12 ビデオ 150 日本 12 テレビ 80 米国 1 ビデオ 70 米国 11 テレビ 60 米国 12 ビデオ 120 米国 12 テレビ 90 地域ごとの、その地域の売上に占める割合(小数第3位以下を切り捨て)を求める 出力結果 地域名 月 製品名 売上額 売上比率(%) ------ -- ------ ------ ------------ 日本 11 ビデオ 100 27.02 日本 11 テレビ 40 10.81 日本 12 ビデオ 150 40.54 日本 12 テレビ 80 21.62 米国 1 ビデオ 70 20.58 米国 11 テレビ 60 17.64 米国 12 ビデオ 120 35.29 米国 12 テレビ 90 26.47
create table 販売実績額( 地域名 char(4), 月 number(2), 製品名 char(6), 売上額 number(3)); insert into 販売実績額 values('日本',11,'ビデオ',100); insert into 販売実績額 values('日本',11,'テレビ', 40); insert into 販売実績額 values('日本',12,'ビデオ',150); insert into 販売実績額 values('日本',12,'テレビ', 80); insert into 販売実績額 values('米国', 1,'ビデオ', 70); insert into 販売実績額 values('米国',11,'テレビ', 60); insert into 販売実績額 values('米国',12,'ビデオ',120); insert into 販売実績額 values('米国',12,'テレビ', 90); commit;
select 地域名,月,製品名,売上額, trunc(Ratio_To_Report(売上額) over(partition by 地域名) * 100,2) as "売上比率(%)" from 販売実績額;
Ratio_To_Report関数を使うと、総合計に対する比率を取得できます