2016-04-07 20 views
-1

「スコア」列のSUMおよびSAMPLE SIZEを、個々の「患者」の複数の要約レベルで戻したいとします。問題は、要約レベルを追加すると、それらの要約レベルのいくつかが、患者1人当たりの行を患者1人あたり複数の行に分割することです。これらの患者が分裂すると、要約レベルのSUMは不正確になり始める。 "Patient"ごとに複数の行を持つ1つのサブクエリを使用する方法はありますか? "Patient"がユニークな各レベルのGroup By/SUMだけですか?Oracle SQL - 1つの列に基づいて1つの列に複数のレベルを一意に集計する

例サブクエリの結果:

Patient Location DiseaseState Care Team Member Score 
1  CityA  Hypertension Provider1  10 
1  CityA  Hypertension Pharmacist1  10 
1  CityA  Hypertension Health Coach1 10 
1  CityA  Diabetes  Provider1  10 
1  CityA  Diabetes  Pharmacist1  10 
1  CityA  Diabetes  Health Coach1 10 
2  CityB  Hypertension Provider1  20 
2  CityB  Hypertension Pharmacist2  20 
2  CityB  Hypertension Health Coach1 20 
2  CityB  Diabetes  Provider1  20 
2  CityB  Diabetes  Pharmacist2  20 
2  CityB  Diabetes  Health Coach1 20 
2  CityB  CKD    Provider1  20 
2  CityB  CKD    Pharmacist2  20 
2  CityB  CKD    Health Coach1 20 

私は、このサブクエリからまとめたいと思い、何がそれぞれの「ケアチームメンバー」、「DiseaseState」、「場所」平均得点です。私が「スコア」をSUMにした場合「ケアチームメンバー」によって、私ははるかに高い得点を得ます。どういうわけか "スコア"を "患者"が "場所"、 "DiseaseState"、 "ケアチームメンバー"などのUNIQUEとGROUPであるとすることはできますか?

+2

したがって、表示するデータはクエリで選択されたデータです。しかし、このデータを何らかの形で凝縮したいとします。あなたは希望の出力を表示していただけますか? –

答えて

0

SUM analytics関数でPARTITIONを使用できるはずです。ような何か:

SELECT SUM(SCORE) OVER (PARTITION BY "Location", "DiseaseState", "Care Team Member") 
FROM TABLE 

パーティション句のみ各グループの値を合計する、group byのように動作しますが、既存のgroup by

に次のリンクを変更する必要はありませんが、いくつかの追加情報を持っており、分析関数としてSUMを使用した例 http://docs.oracle.com/cd/E11882_01/server.112/e41084/functions182.htm#SQLRF06115

+0

これは、各行が位置、病状およびケアチームのメンバーのユニークな組み合わせを有するので、サンプルデータの行を集約しません。 – MT0

+0

@ MT0、そうかもしれない。しかし、彼が使用しているクエリにアクセスすることができないため、分析機能の使い方を正確に特定するのは難しいです。私は個人的にこの方法を使用して同様の要件を達成しました。パーティションは、元のクエリのより低いレベルで実行して、望ましい結果を得る必要があるかもしれませんが、データの生成方法を知らなくても、より正確にすることは不可能です。 – Joel

関連する問題