Oracle SQL-根据一列的唯一性为一个分数列汇总多个级别
我想返回单个“患者”在多个汇总级别的“得分”列的总和和样本量。问题是,当我添加汇总级别时,其中一些汇总级别会将每个患者的一行拆分为多行。由于这些患者被分开,汇总水平的总和开始不准确。是否有某种方法可以使用一个子查询,每个“患者”有多行,但在“患者”唯一的每个级别上只使用Group By/SUM 子查询结果示例:Oracle SQL-根据一列的唯一性为一个分数列汇总多个级别,sql,oracle,Sql,Oracle,我想返回单个“患者”在多个汇总级别的“得分”列的总和和样本量。问题是,当我添加汇总级别时,其中一些汇总级别会将每个患者的一行拆分为多行。由于这些患者被分开,汇总水平的总和开始不准确。是否有某种方法可以使用一个子查询,每个“患者”有多行,但在“患者”唯一的每个级别上只使用Group By/SUM 子查询结果示例: Patient Location DiseaseState Care Team Member Score 1 CityA Hypertensio
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
我想从这个子查询中总结的是每个“护理团队成员”、“疾病状态”、“位置”的平均得分。如果我把“护理团队成员”的“得分”加起来,我会得到比我应该得到的高得多的分数。我是否可以在“患者”是唯一的情况下对“得分”进行求和,并按“位置”、“疾病状态”、“护理团队成员”等进行分组?您应该能够使用具有求和分析功能的分区。比如:
SELECT SUM(SCORE) OVER (PARTITION BY "Location", "DiseaseState", "Care Team Member")
FROM TABLE
partition子句的作用类似于group by
,只对每个组的值求和,而不需要修改现有的group by
子句
下面的链接提供了一些使用SUM作为分析函数的附加信息和示例
因此,您显示的数据就是您的查询现在选择的数据。但你想以某种方式压缩这些数据。您能显示所需的输出吗?这不会聚合样本数据的任何行,因为每行都有位置、疾病状态和护理团队成员的唯一组合。@MT0,您可能是对的。然而,由于无法访问他使用的查询,很难更具体地说明如何使用分析功能。不过,我个人已经使用这种方法完成了类似的需求。分区可能需要在原始查询的较低级别上运行以获得所需的结果,但如果不知道数据是如何生成的,就不可能更精确。