我的桌子上有医生ID,探视ID (一位医生可以进行多次访问)和访问原因,看上去如下:
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
提前感谢!
发布于 2013-08-26 10:11:15
这应该是可行的:
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-26 10:10:53
你试过CASE WHEN visit_cause = '1' THEN COUNT(*)
吗?
https://stackoverflow.com/questions/18441577
复制相似问题