首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL grouped语句,带count和percentage

SQL grouped语句,带count和percentage
EN

Stack Overflow用户
提问于 2014-06-03 19:36:00
回答 3查看 94关注 0票数 0

我有一个这样的表(简化版)

代码语言:javascript
复制
ID1  ID2  Status
---  ---  ------
1    33     0 
1    33     0 
1    33     1 
1    33     1 
1    34     1 
1    34     2 
2    33     0
2    33     0
2    34     0

我想要获得一个计数,即按状态类型分组的状态总数,以及它占与特定ID2 ID1 &ID2相关的状态数的百分比

输出示例如下

代码语言:javascript
复制
ID1  ID2  Status   Count   Percentage
---  ---  ------   -----   ----------
1    33     0        2         50%
1    33     1        2         50%
1    34     1        1         50%
1    34     2        1         50%
2    33     0        2         100%
2    34     0        1         100%

到目前为止,我只能得到计数,但不能得到百分比。这是我现在的问题

代码语言:javascript
复制
select ID1, ID2 ,  status, count(ID2) as Count 
 from 
StatTable
 group by ID1, ID2, status
EN

回答 3

Stack Overflow用户

发布于 2014-06-03 19:39:24

您可以通过使用窗口函数获取每个id1id2组合的总百分比来获得百分比:

代码语言:javascript
复制
select ID1, ID2 ,  status, count(*) as cnt,
       count(*) * 100.0 / count(*) over (partition by id1, id2) as Percentage
from StatTable
group by ID1, ID2, status;
票数 4
EN

Stack Overflow用户

发布于 2014-06-03 20:10:22

我对戈登查询做了一些小改动,现在它与你预期的答案相匹配-

代码语言:javascript
复制
select ID1, ID2 ,  status, count(*) as cnt,
       100.0 / count(*) over (partition by id1, id2) as Percentage
from table1TEmp
group by ID1, ID2, status;
票数 0
EN

Stack Overflow用户

发布于 2014-06-03 21:04:46

这对我很有效

代码语言:javascript
复制
select ID1, ID2 ,  status, count(ID2) as cnt,
       count(ID2) * 100.0 / (select count(ID2) from StatTable group by ID1) as Percentage
from StatTable
group by ID1, ID2, status;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24014164

复制
相关文章

相似问题

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