2016-12-18 9 views
1

パーセントの列を計算しようとしている次のクエリがありますが、正しく計算されていないため、各行に対して100が正しく表示されています。計算百分率で最も良い方法を計算する

私はここで間違っていますか?私は、さまざまな方法でパーセンテージを計算する例をたくさん見てきましたが、私はここで最善のアプローチが何かを考えています。

Select 
DrugName, 
Occurrences, 
(Occurrences/sum(Occurrences)) * 100 as Percentage 
from 
(
select 
D.DrugName, 
count(*) as Occurrences 
from 
Visit V 
Inner Join Drug D on 
V.DrugID = D.DrugID 
where 
StartDate >='01 Oct 2016' and 
EndDate < '01 Jan 2017' 
group by 
D.DrugName 
) a 
group by 
DrugName, 

答えて

1

これを行うための最善の方法は、ウィンドウ関数を使用しています。

select D.DrugName, 
     count(*) as Occurrences, 
     count(*) * 100.0/sum(count(*)) over() 
from Visit V Inner Join 
    Drug D 
    on V.DrugID = D.DrugID 
where StartDate >= '2016-10-01' and 
     EndDate < '2017-01-01' 
group by D.DrugName; 
+0

のいずれかに動作しないことunfortnatelyありがとうございますが。すべての行に対して0.024390243902を返します。 – Philip

+0

Gordonに感謝します.1.0を100.0に変更すると、私のトリックになりました。ジョンが以下に示唆したように。 – Philip

関連する問題