Oracle SQL-基于一列的唯一性为一个分数列汇总多个级别



我想为单个"患者"返回多个汇总级别的"分数"列的SUM和SAMPLE SIZE。问题是,当我添加汇总级别时,其中一些汇总级别会将每个患者的一行拆分为每个患者的多行。当这些患者被分开时,汇总级别的总和开始不准确。有没有办法使用一个子查询,每个"Patient"有多行,但在每个级别只有Group By/SUM,其中"Patient"是唯一的?

子查询结果示例:

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"one_answers"Location"的平均分数。如果我将"护理团队成员"的"分数"相加,我会得到比我应该得到的分数高得多的分数。我能以某种方式求和"分数"吗?其中"患者"是唯一的,并按"地点"、"DiseaseState"、"护理团队成员"等分组。?

您应该能够将PARTITION与SUM分析函数一起使用。类似于:

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

partition子句的作用类似于group by,只对每个组的值求和,但不需要修改现有的group by子句

以下链接提供了一些附加信息和使用SUM作为分析函数的示例http://docs.oracle.com/cd/E11882_01/server.112/e41084/functions182.htm#SQLRF06115

最新更新