Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有一种方法可以计算SQL中计数别名的总和?_Sql_Sql Server - Fatal编程技术网

有没有一种方法可以计算SQL中计数别名的总和?

有没有一种方法可以计算SQL中计数别名的总和?,sql,sql-server,Sql,Sql Server,我正在尝试创建一个自定义SQL报告,该报告将提供在客户服务代表结束与客户的通话后单击的处置代码的百分比 我目前正在使用计数别名来计算将处置代码分配给客户呼叫的次数。然后,我想将DispositionCount别名总结到另一个名为“Total”的列中。然后,我想通过计算DispositionCount/Total来查看选择处置代码的次数百分比。是否可以对一个别名求和以获得总计数,然后根据两个别名列计算百分比 当前查询: SELECT WrapupData, ISNULL(Wrapu

我正在尝试创建一个自定义SQL报告,该报告将提供在客户服务代表结束与客户的通话后单击的处置代码的百分比

我目前正在使用计数别名来计算将处置代码分配给客户呼叫的次数。然后,我想将DispositionCount别名总结到另一个名为“Total”的列中。然后,我想通过计算
DispositionCount/Total
来查看选择处置代码的次数百分比。是否可以对一个别名求和以获得总计数,然后根据两个别名列计算百分比

当前查询:

SELECT
    WrapupData,
    ISNULL(WrapupData, 'No Dispos Code Entered') as DispositionCode,
    COUNT(CASE WHEN WrapupData IS NULL THEN 0 ELSE 1 END) AS DispositionCount
FROM Termination_Call_Detail tcd
LEFT JOIN dbo.t_Call_Type ct ON ct.CallTypeID = tcd.CallTypeID
GROUP BY
    WrapupData
电流输出

+---------------------+-------------------------+---------------------+
|                     |                         |                     |                  
+---------------------+-------------------------+---------------------+
| WrapupData          | DispositionCode         |  DispositionCount   |
| NULL                | No Dispos Code Entered  |  8                  |
| Appointment Request | Appointment Request     |  3                  |
+---------------------+-------------------------+---------------------+
期望输出

+---------------------+-------------------------+------------------+------------------+
| WrapupData          | DispositionCode         | DispositionCount |Total | Percentage|
| NULL                | No Dispos Code Entered  | 8                | 11   | 72.72     |
| Appointment Request | Appointment Request     | 3                | 11   | 27.27     |
+---------------------+-------------------------+------------------+------------------+  
我尝试了
count(sum(WrapupData))
但WrapupData是varchar,对sum运算符无效

我还尝试了
count(sum(DispositionCount))
但是DispositionCount返回时是一个无效的列名(我假设它是一个别名,只是临时的)


任何帮助或建议都将不胜感激

您可以在此处使用分析函数:

选择
包装数据,
ISNULL(WrapupData,“未输入处置代码”)作为处置代码,
计数(WrapupData)作为处置计数,
将()上的总和(计数(WrapupData))作为总计,
超过()的100.0*计数(WrapupData)/总和(计数(WrapupDatalse))百分比
从终端\u呼叫\u详细tcd
左连接dbo.t\u调用类型ct
在ct.CallTypeID=tcd.CallTypeID上
分组
包装数据;

这里要使用
SUM()
和一个覆盖整个表的窗口post aggregation来查找总数。我们还可以通过使用此总和对计数进行规范化来找到百分比。

请不要垃圾邮件发送无关的标记:SSMS与手头的问题无关,MySql和MS SQL Server是完全不同的产品。@Filburt SQL Server标记本身很可能适合这里。@Filburt指出。谢谢,我对SQL有些陌生!非常感谢。由于数据库模式的原因,我不得不做一些更改,但是我得到了我想要的输出!看起来我需要研究一些解析函数:)@DerrikAntrium。。。是的,分析函数在一些不同的领域非常有用,它们值得学习。