2017-01-05 3 views
0

パーセンテージ以外のすべてのフィールドを持つテーブルがあります。合計ケース数に基づいて、ケースIDごとにパーセンテージを計算する必要があります。解釈を簡単にするために、私は以下のような数字を選びます。したがって、すべてのcaseidの合計ケースは100です。このケースのIDは35ケースなので、そのパーセンテージは35です。これらの合計パーセンテージ値を取得し、それに応じてテーブルで更新するにはどのスクリプトを使用できますか。SQLは、テーブルと更新の既存のデータに基づいてパーセンテージを計算します

CaseID NumHighCases NumMedCases NumLowCases TotalCases TotalPerc 
1   10   20   5   35   35% 
2   5    5   5   15   15% 
3   8    12   20   40   40% 
4   3    4   3   10   10% 
+1

なぜテーブルを更新するのですか?必要なときに毎回これを計算してみませんか? – Mureinik

+1

上記を達成するためのSQLは何ですか?データを選択するには、SQLのtotalPcalとして 'Total_cases/sum(total_cases)over(partition by null)as totalPerc'だけが必要です。 – xQbert

答えて

4
TotalPerc = (TotalCases*100.0)/sum(TotalCases) over (partition by null) 

注* 100は、それ以外の場合はint型/ intはint型を返します、精度を追加することです。

+0

私は[2008](https://msdn.microsoft.com/en-us/library/ms189461.aspx)のウィンドウ関数について考えましたが、多分私は間違っています。 – xQbert

+0

申し訳ありませんが、私はコメントを削除しました。私は、2つの選択をするのではなく、1つのショットでこれを行うことが、もちろんより効率的であると考えました。 OPと静的テーブルを持つ既存の列がすべて存在することをOPのように解釈していましたが、xQbertの解決策は、OPがSELECTの実行中にこの情報を計算しようとしていることを前提としています-飛ぶ。あれは正しいですか? – Santi

+0

@xQbertあなたは正しいと思います。私は昨夜夕食のために何を食べたのか尋ねます。 –

関連する問題