SQL搞清楚不重复的客户端

时间:2015-11-16 16:32:26

标签: sql sql-server

这是我想要弄清楚的。

  

在1/1 / 15-9 / 30/15的时间范围内,BMI等于或高于第85百分位数的非重复客户的数量。

客户可以在这段时间内成倍增加,现在我正在提升未重复的客户,但是当他们的BMI发生变化时,如果他们进入第二/第三/第四/等时间,他们将被视为一个新的不重复的客户。

当我第一次进入BMI分数时,我只想算数。

SELECT DISTINCT
         COUNT(PATIENT.PATIENT_NO) Custom,
         PATIENT.PATIENT_NO Patient_no,
         Vsfile.BMI_SCORE Bmi_score
    FROM VSFILE Vsfile
         INNER JOIN PATIENT PATIENT
                 ON Vsfile.PATIENT_NO = PATIENT.PATIENT_NO
   WHERE (((Vsfile.BMI_SCORE > 1)
     AND (PATIENT.ENCOUNTER_DATE BETWEEN '01/01/2015' AND '09/30/2015')))
GROUP BY PATIENT.PATIENT_NO,
         Vsfile.BMI_SCORE

1 个答案:

答案 0 :(得分:0)

你还需要退还他们的BMI吗?

如果没有,只需停止对其进行分组,例如:

Select count(distinct patient_no)
From my tables
Where BMIPercentile > .85 
  and encounter_date BETWEEN '01/01/2015' AND '09/30/2015' 

如果你这样做,那么你要么想要一些额外的标准 - 例如取每位患者的max BMI值 - 或windowed函数。

作为旁注,我的答案假定您使用的是SQL服务器,但一般来说,如果您使用您正在使用的SQL类型(SQL服务器,MySQL,Oracle)标记您的问题,您将获得更多运气。 ..)。