如何计算一列与另一列的百分比?
How do I calculate the percentage of one column to another?
我有一个问题:
SELECT CAST(SUBMITDATE as date) as 'Date'
,COUNT(*) as [Tickets Submitted]
,SUM(CASE WHEN STATUS = 'Closed' THEN 1 ELSE 0 END) as [Tickets Closed]
FROM Table1
WHERE SUBMITDATE >= '2015-05-29'
AND SUBMITDATE < '2015-06-03'
GROUP BY CAST(SUBMITDATE as date)
产生以下结果:
Date Tickets Submitted Tickets Closed
2015-05-29 1062 1040
2015-05-30 429 416
2015-05-31 260 250
2015-06-01 705 654
2015-06-02 556 515
2015-06-03 508 452
我想计算已关闭工单的百分比。
[已关闭的工单] 除以 [已提交的工单]。
当我尝试添加时:,SUM((CASE WHEN STATUS = 'Closed' THEN 1 ELSE 0 END)/COUNT(*)) as [Percentage of Tickets Closed]
我收到以下错误:
"Cannot perform an aggregate function on an expression containing an aggregate or a subquery."
有人能帮忙吗?
非常感谢。
不要将 COUNT 放在 SUM 中。像这样尝试:
,CAST(SUM(CASE WHEN mrSTATUS = 'Closed' THEN 1 ELSE 0 END) AS float)/CAST(COUNT(*) AS float) as [Percentage of Tickets Closed]
SUM 和 COUNT 函数将生成整数,这意味着除法也将生成整数。将它们转换为浮点数以获得分数。
,CAST(CAST(SUM(CASE WHEN STATUS = 'Closed' THEN 1 ELSE 0 END) as FLOAT)/CAST(COUNT(*) as FLOAT)*100 as DECIMAL(5,2)) as [% of Tickets Closed]
正是我要找的。
这是我得到的结果:
Date Tickets Submitted Tickets Closed % of Tickets Closed
2015-05-29 1062 1047 98.59
2015-05-30 428 418 97.66
2015-05-31 260 253 97.31
2015-06-01 703 669 95.16
2015-06-02 555 517 93.15
2015-06-03 507 463 91.32
我有一个问题:
SELECT CAST(SUBMITDATE as date) as 'Date'
,COUNT(*) as [Tickets Submitted]
,SUM(CASE WHEN STATUS = 'Closed' THEN 1 ELSE 0 END) as [Tickets Closed]
FROM Table1
WHERE SUBMITDATE >= '2015-05-29'
AND SUBMITDATE < '2015-06-03'
GROUP BY CAST(SUBMITDATE as date)
产生以下结果:
Date Tickets Submitted Tickets Closed
2015-05-29 1062 1040
2015-05-30 429 416
2015-05-31 260 250
2015-06-01 705 654
2015-06-02 556 515
2015-06-03 508 452
我想计算已关闭工单的百分比。 [已关闭的工单] 除以 [已提交的工单]。
当我尝试添加时:,SUM((CASE WHEN STATUS = 'Closed' THEN 1 ELSE 0 END)/COUNT(*)) as [Percentage of Tickets Closed]
我收到以下错误:
"Cannot perform an aggregate function on an expression containing an aggregate or a subquery."
有人能帮忙吗?
非常感谢。
不要将 COUNT 放在 SUM 中。像这样尝试:
,CAST(SUM(CASE WHEN mrSTATUS = 'Closed' THEN 1 ELSE 0 END) AS float)/CAST(COUNT(*) AS float) as [Percentage of Tickets Closed]
SUM 和 COUNT 函数将生成整数,这意味着除法也将生成整数。将它们转换为浮点数以获得分数。
,CAST(CAST(SUM(CASE WHEN STATUS = 'Closed' THEN 1 ELSE 0 END) as FLOAT)/CAST(COUNT(*) as FLOAT)*100 as DECIMAL(5,2)) as [% of Tickets Closed]
正是我要找的。
这是我得到的结果:
Date Tickets Submitted Tickets Closed % of Tickets Closed
2015-05-29 1062 1047 98.59
2015-05-30 428 418 97.66
2015-05-31 260 253 97.31
2015-06-01 703 669 95.16
2015-06-02 555 517 93.15
2015-06-03 507 463 91.32