Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle SQL-根据一列的唯一性为一个分数列汇总多个级别_Sql_Oracle - Fatal编程技术网

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

Oracle SQL-根据一列的唯一性为一个分数列汇总多个级别,sql,oracle,Sql,Oracle,我想返回单个“患者”在多个汇总级别的“得分”列的总和和样本量。问题是,当我添加汇总级别时,其中一些汇总级别会将每个患者的一行拆分为多行。由于这些患者被分开,汇总水平的总和开始不准确。是否有某种方法可以使用一个子查询,每个“患者”有多行,但在“患者”唯一的每个级别上只使用Group By/SUM 子查询结果示例: Patient Location DiseaseState Care Team Member Score 1 CityA Hypertensio

我想返回单个“患者”在多个汇总级别的“得分”列的总和和样本量。问题是,当我添加汇总级别时,其中一些汇总级别会将每个患者的一行拆分为多行。由于这些患者被分开,汇总水平的总和开始不准确。是否有某种方法可以使用一个子查询,每个“患者”有多行,但在“患者”唯一的每个级别上只使用Group By/SUM

子查询结果示例:

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,您可能是对的。然而,由于无法访问他使用的查询,很难更具体地说明如何使用分析功能。不过,我个人已经使用这种方法完成了类似的需求。分区可能需要在原始查询的较低级别上运行以获得所需的结果,但如果不知道数据是如何生成的,就不可能更精确。