繁体   English   中英

SQL Server:计算百分比

[英]SQL Server : calculate percentage

我需要您的帮助,因为我的SQL水平很弱,我正在尝试做一些事情,但找不到实现方法。

假设我有以下几行

| Data| Status |   Date     |
| A   |  OK    | 2017-01-20 |
| B   |  KO    | 2017-01-20 |
| C   |  OK    | 2017-01-20 |
| A   |  OK    | 2017-01-21 |
| B   |  KO    | 2017-01-21 |
| C   |  KO    | 2017-01-21 |
| A   |  OK    | 2017-01-22 |
| B   |  KO    | 2017-01-22 |
| C   |  OK    | 2017-01-22 |

我想查询数据库以获得3天的OK百分比结果,所以看起来

A | 100%
B | 0%
C | 66%

我已经为1个数据完成了此操作,但是我被卡住了,也许我需要循环或其他操作:

Select 
    Data, (Select Count(*) From DB Where 
    Date between '2017-01-20' and '2017-01-22' 
    And Status = 'OK') * 100 / (Select Count(*) From DB 
                                Where Date between '2017-01-20' and '2017-01-22')

From 
    DB

尝试这个:

SELECT Data, CAST(CAST(AVG((CASE WHEN Status='OK' THEN 100.0 ELSE 0.0 END)) AS INT) AS VARCHAR(MAX)) + '%'
FROM DB
WHERE Date BETWEEN '2017-01-20' AND '2017-01-22'
GROUP BY Data

在数据资源管理器中尝试 *特别感谢@ t-clausen.dk吸引了我这个出色的工具

SELECT
  100*(count(*)-count(nullif(Status,'OK')))/count(*), Data
FROM 
  <yourtable>
WHERE
  Date between'2017-01-20' and '2017-01-22' 
GROUP BY
  Data

试试看

尝试这个:

select m.data, ISNULL(((max(tot)*100)/count(m.status)), 0) percentage
from myTable m
LEFT JOIN (select data, count(status) tot from myTable m1 where status ='ok' and date between '2017-01-20' and '2017-01-22' group by m1.data) m2 on m2.data = m.data
where date between '2017-01-20' and '2017-01-22'
group by m.data

要么

select m.data, 
ISNULL(((sum(case when m.status = 'ok' then 1 else 0 end)
                                                     *100)/count(m.status)), 0) percentage
from myTable m
where date between '2017-01-20' and '2017-01-22'
group by m.data

询问

select [Data],
((cast((sum(case [Status] when 'OK' then 1 else 0 end)) as decimal(5, 2))) / 
cast(count([Data]) as decimal(5, 2))) * 100.00 as perc
from [your_table_name]
where [Date] between '2017-01-20' and '2017-01-22'
group by [Data];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM