【发布时间】:2015-11-10 07:32:36
【问题描述】:
我有一张包含诊断和患者 ID 的表格。该表的每个诊断都有一行,带有患者 ID 和诊断。
例如
Patient ID | Diagnosis
-----------|----------
0 | Asthma
1 | Hypertension
1 | Asthma
2 | Asthma
2 | Hypertension
2 | Cancer
3 | Asthma
我想输出一些类似的东西
Asthma | 4
Hypertension | 2
Asthma & Hypertension | 2
Asthma, Hypertension and Cancer | 1
如何计算与诊断名称组合的诊断数量?
即x 患者患有哮喘,x 患者患有哮喘和高血压,x 患者患有糖尿病、心脏病、肺病、癌症等。
有些患者有多达 12 个诊断。提前谢谢!
【问题讨论】:
-
编辑您的问题并提供示例数据和所需结果(以表格格式)。另外,用您正在使用的数据库标记问题。
-
Gordon,在这种情况下数据库真的重要吗?当然,这是一个方法问题,而不是语法问题?他确实很好地描述了数据
-
@Kevin..这将是 2**12 = 4096 个组合,而不是 12 个!
-
@vkp 信息太少,无法确定组合的数量,因为可供选择的诊断集中的元素数量未知,但假设有 100 个可能的诊断,那么您可以选择 1 100 种方式,4950 种方式中的 2 种方式,近 400 万种方式中的 4 种方式和 ~1*10**15 种方式中的 12 种方式(如果我记得如何正确计算组合)。
-
@Samcd 据我所知,Postgres 是唯一可以执行此类数组操作的 DBMS。但是您也可以使用纯字符串连接来做到这一点:sqlfiddle.com/#!4/fb6c9/3 虽然它可能没有那么有效。此外,在 Oracle 中,诊断元素的完整列表限制为 4000 字节(如果启用了扩展字符串,则在 Oracle 12 中为 32k)
标签: sql