2015-11-16 25 views
1

這是我想弄明白的。SQL計算出不重複的客戶端

在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 

回答

0

您是否需要返回他們的BMI?

如果沒有,只是停在它的分組,例如:

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

如果你這樣做,那麼你要麼需要一些附加條件 - 例如取每個患者BMI值的maxwindowed函數。作爲一個便箋,我的答案在這裏假設你使用的是SQL服務器,但是如果你用你正在使用的SQL類型標記你的問題(SQL服務器,MySQL,Oracle .. )。