首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何根据t中的条件对一列的值进行分组?

如何根据t中的条件对一列的值进行分组?
EN

Stack Overflow用户
提问于 2013-08-26 10:06:59
回答 2查看 2.4K关注 0票数 1

我的桌子上有医生ID,探视ID (一位医生可以进行多次访问)和访问原因,看上去如下:

代码语言:javascript
运行
复制
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条件下对每个医生的所有就诊情况进行统计之前,我必须在我的查询中包含以下内容:

代码语言:javascript
运行
复制
SELECT 
   v.vra_uid, 
   COUNT(v.visit_uid) OVER (PARTITION BY v.vra_uid) AS number_of_visits
FROM visits v 

它返回:

代码语言:javascript
运行
复制
doctor_uid | number_of_visits 
    11-11-11    2     
    22-22-22    1     

我怎样才能算出每一位医生的visit_cause = '1‘呢?这样看起来就像:

代码语言:javascript
运行
复制
    doctor_uid | number_of_visits | visits_with_cause_equal_1
    11-22-33    2                           2
    22-22-22    1                           0

提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-26 10:11:15

这应该是可行的:

代码语言:javascript
运行
复制
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
票数 3
EN

Stack Overflow用户

发布于 2013-08-26 10:10:53

你试过CASE WHEN visit_cause = '1' THEN COUNT(*)吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18441577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档