1

私のテーブルには、医師 ID、訪問 ID (1 人の医師が複数の訪問を行うことができます)、および訪問の原因が含まれています。次のようになります。

doctor_uid | visit_uid | visit_cause
11-11-11    22-22-11      1
22-22-22    44-44-22      2
11-11-11    23-23-23      1

に基づいて、各医師のすべての訪問をカウントする必要がありますvisit_cause(等しいはずです'1')。の条件のない各医師のすべての訪問をカウントする前にvisit_cause、これもクエリに含める必要があります。

SELECT 
   v.vra_uid, 
   COUNT(v.visit_uid) OVER (PARTITION BY v.vra_uid) AS number_of_visits
FROM visits v 

戻り値:

doctor_uid | number_of_visits 
    11-11-11    2     
    22-22-22    1     

visit_cause各医師の = '1' を持つ訪問をカウントするにはどうすればよいですか? 次のようになります。

    doctor_uid | number_of_visits | visits_with_cause_equal_1
    11-22-33    2                           2
    22-22-22    1                           0

前もって感謝します!

4

2 に答える 2

3

これはうまくいくはずです:

select v.vra_uid, COUNT(v.visit_uid) as number_of_visits , SUM(case when v.visit_cause = 1 then 1 else 0 end) as visits_with_cause_equal_1
from visits v 
group by v.vra_uid
于 2013-08-26T10:11:15.140 に答える
0

やってみましたCASE WHEN visit_cause = '1' THEN COUNT(*)

于 2013-08-26T10:10:53.093 に答える