首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Server 2008中使用百分比获取计数

在Server 2008中使用百分比获取计数
EN

Stack Overflow用户
提问于 2016-01-11 16:56:57
回答 2查看 131关注 0票数 1

我在Server中计算计数,但使用该计数,我也希望在另一列中使用百分比(%)标记,因此请帮助

我要这个输出:

代码语言:javascript
复制
Total-  Resolved-   Repair -    Follow-Up-  Other
135     20          15          100         0
100%    14.81%      11.11%      74.07%      0%

我要得到计数的查询如下:

代码语言:javascript
复制
SELECT
    COUNT(*) as Total,
    (SELECT COUNT(*) FROM LMR WHERE StatusID=1) as 'Resolved',
    (SELECT COUNT(*) FROM LMR WHERE StatusID=2) as 'Repair',
    (SELECT COUNT(*) FROM LMR WHERE StatusID=3) as 'Follow-Up',
    (SELECT COUNT(*) FROM LMR WHERE StatusID=4) as 'Other'
FROM LMR;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-11 18:37:00

使用Union并将您的值转换为varchar可能如下:

代码语言:javascript
复制
SELECT CONVERT(varchar(5),COUNT(*)) as Total,
       CONVERT(varchar(5),(SELECT COUNT(*) FROM LMR WHERE StatusID=1)) as 'Resolved',
       CONVERT(varchar(5),(SELECT COUNT(*) FROM LMR WHERE StatusID=2)) as 'Repair',
       CONVERT(varchar(5),(SELECT COUNT(*) FROM LMR WHERE StatusID=3)) as 'Follow-Up',
       CONVERT(varchar(5),(SELECT COUNT(*) FROM LMR WHERE StatusID=4)) as 'Other'
FROM LMR
UNION ALL 
SELECT CONVERT(varchar(5),COUNT(*)*100/COUNT(*))+'%',
       CONVERT(varchar(5), ((SELECT COUNT(*) FROM LMR WHERE StatusID=1)*100/COUNT(*)))+'%',
       CONVERT(varchar(5), ((SELECT COUNT(*) FROM LMR WHERE StatusID=2)*100/COUNT(*)))+'%',
       CONVERT(varchar(5), ((SELECT COUNT(*) FROM LMR WHERE StatusID=3)*100/COUNT(*)))+'%',
       CONVERT(varchar(5), ((SELECT COUNT(*) FROM LMR WHERE StatusID=4)*100/COUNT(*)))+'%'
FROM LMR
票数 2
EN

Stack Overflow用户

发布于 2016-01-11 18:04:24

使用Conditional count而不是为每个status执行单独的select

计算百分比(invidual_count/total_count) * 100

尝尝这个

代码语言:javascript
复制
SELECT
    COUNT(*) as Total,
    COUNT(case when StatusID=1 then 1 end)  as 'Resolved',
    COUNT(case when StatusID=2 then 1 end) as 'Repair'
    COUNT(case when StatusID=3 then 1 end) as 'Follow-Up'
    COUNT(case when StatusID=4 then 1 end) as 'Other',
FROM LMR;
UNION ALL 
SELECT
    (COUNT(*)/COUNT(*))*100 as Total,
    (COUNT(case when StatusID=1 then 1 end)/NULLIF(COUNT(*),0))*100  as 'Resolved',
    (COUNT(case when StatusID=2 then 1 end)/NULLIF(COUNT(*),0))*100 as 'Repair'
    (COUNT(case when StatusID=3 then 1 end)/NULLIF(COUNT(*),0))*100 as 'Follow-Up'
    (COUNT(case when StatusID=4 then 1 end)/NULLIF(COUNT(*),0))*100 as 'Other',
FROM LMR;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34726989

复制
相关文章

相似问题

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