我需要先在SELECT中删除重复项,然后再对其进行计数.我需要数一数已经做了多少次测试.患者无法在同一测试中获得相同的值.我试过DISTINCT
,但结果是GROUP BY(DISTINCT)
而不是GROUP BY(GROUP BY)
.基本相同,但DISTINCT
将删除patient\u测试表中需要的其他列.我使用视图作为一种良好的做法,但我不确定这是否有帮助.
TLDR:我想通过改进嵌套组,但我找不到方法.
table: patient_test (12 rows)
Patient | Test | Value
--------------------------------
Laura | Test A | 1.3
Laura | Test B | 8.9 <-
Laura | Test B | 8.9 <-
Laura | Test C | 8.9
Charles | Test B | 8.9
Charles | Test B | 4.6
Charles | Test C | 5.6
Maria | Test A | 1.2 <--
Maria | Test A | 1.2 <--
Maria | Test B | 1.2
Maria | Test B | 8.9
Maria | Test C | 1.2
我这样排除重复项
SELECT * FROM patient_test
GROUP BY Patient , Test, Value
得到:
table: patient_test (10 rows)
Patient | Test | Value
--------------------------------
Laura | Test A | 1.3
Laura | Test B | 8.9
Laura | Test C | 8.9
Charles | Test B | 8.9
Charles | Test B | 4.6
Charles | Test C | 5.6
Maria | Test A | 1.2
Maria | Test B | 1.2
Maria | Test B | 8.9
Maria | Test C | 1.2
然后我这样计算:(我想改进的)
SELECT TestName, count(*) AS Result FROM
(SELECT * FROM patient_test
GROUP BY Patient , Test, Value) AS tempPatient
GROUP BY tempPatient.TestName;
我使用的是视图,但我认为排除重复项并立即将其设置为GROUP BY
可能会更好.
SELECT TestName, count(*) AS Result FROM
(CustomView) AS tempPatient
GROUP BY tempPatient.TestName;
我不能将此列用作解决方案的一部分,因为它将删除其他过程所需的其他列.
SELECT DISTINCT Patient,Test,Value
FROM patient_test
这就是我需要的:
TestName | Result
----------------------
Test A | 2
Test B | 5
Test C | 3
我认为没有必要跑GROUP BY
次.我想找到一种使用示例排除重复项的方法.