我正在使用Microsoft SQL Server和Excel。我有一个问题,我遇到问题,围绕如何计算一些字段,以便它运行得更快。我有一个大型数据集,它被放入excel并插入数据透视表。
最简单的表格将包含许多类似于下面的字段。
日期用户工作类型计数总时间
我的问题是我需要以特定方式计算平均值。每个用户在任何一天都可能有几种工作方式。我的公式是每个日期和用户总和(总时间)/总和(计数)给我以下
日期用户平均值
目前我将选择查询转储到Excel中,将公式应用于列以获取我的平均值,然后使用个人详细信息和平均值构建数据透视表。
超过20,000行的计算约为5-7分钟。
所以我的问题是可以在SQL或Pivot表中进行这种类型的计算以减少处理时间。我对Pivot表并不是很有信心,而且与SQL相比,我认为SQL相当缺乏经验。我可以管理这一点,但是把它全部与匹配日期和用户的条件一起拉到我身边。
我可以将记录集解析为数组,以便在写入电子表格之前以这种方式进行计算,但我觉得应该有更好的方法来实现相同目的。
答案 0 :(得分:0)
SQL中预先计算的聚合在Excel Pivot中可能会出错。
首先,您可能会意外地取平均值。
其次,一旦用户开始重新安排枢轴,你就会得到非常奇怪的小计和总数。
尽量确保在一个地方进行所有聚合。 如果可能,请尝试将SQL与SSRS一起使用,您可以基于参数化存储过程创建报告。因此,您将所有艰苦的工作推送到SQL框,并限制用户不正确地转动事物。
答案 1 :(得分:0)
SELECT Raw_Data.ID,Raw_Data.fldDate,CONVERT(datetime,DATEADD(second,SUM(DATEDIFF(second,0,Raw_Data.TotalHandle))/ SUM(Raw_Data。[Call Count]),0),108)AS avgHandled FROM Raw_Data WHERE(Raw_Data.fldDate BETWEEN '05 -12-2016'和'07 -12-2016') GROUP BY Raw_Data.fldDate,Raw_Data.ID
对于任何感兴趣的人都是我搜索的结果。感谢您指导我正确方向的帮助。由于时间数据类型的转换似乎非常笨拙,但它正在工作。