mysql - SSRS取另一个字段的平均IF值相等

标签 mysql sql-server reporting-services ssrs-2012

我使用 SSRS 和数据库查询为我们的一个系统创建了一个性能跟踪器。因此,现在,它将对卡和处理时间进行求和,并且 SSRS 将使用每天的ProcessingDate 将其绘制成图表。我们的数据库根据 DataBatchID 在数据库中放置一个新行。然而,这种添加所有卡并添加每天处理时间的方法并没有正确考虑线程同时运行的情况。因此,使用 SSRS 有一种方法可以确定ProcessingDate 是否完全相同,只需将这些结果与NumCardsPassed 相加,并取ProcessingTime 的平均值,然后将这些结果添加到当天的其余结果中。抱歉,如果我没有解释清楚。下面是从查询返回的数据集示例,因此对于 10:24 传入的所有数据,添加 numCardsPassed 并平均处理时间,然后对 10:25 执行相同的操作。之后,然后将 8 月 26 日的所有这些值绘制在一起。现在,当它绘制图形时,它看起来好像所有内容都按顺序一次运行一个,而不是像有时那样运行在一起:

ProcessingDate  DataBatchId NumCardsPassed  ProcessingTime
8/26/2016 7:39    10112       99314               485
8/26/2016 8:51    10113        4971               29
8/26/2016 9:14    10114        4971               34
8/26/2016 10:20   10115        4957               38
8/26/2016 10:23   10116        4961               104
8/26/2016 10:24   10117        4979               144
8/26/2016 10:24   10119        4979               182
8/26/2016 10:24   10118        4982               161
8/26/2016 10:24   10120        4987               219
8/26/2016 10:24   10122        4982               243
8/26/2016 10:24   10121        4981               236
8/26/2016 10:24   10125        4949               262
8/26/2016 10:24   10123        4941               247
8/26/2016 10:24   10127        4973               278
8/26/2016 10:24   10124        4975               241
8/26/2016 10:24   10128        4981               279
8/26/2016 10:25   10129        4976               280
8/26/2016 10:25   10126        4972               258
8/26/2016 10:25   10130        4979               277
8/26/2016 10:25   10132        4976               288
8/26/2016 10:25   10131        4972               277
8/26/2016 10:25   10133        4841               288

最佳答案

您可以在查询中执行此操作:

SELECT ProcessingDate, SUM(NumCardsPassed) AS NumCardsPassed, AVG(ProcessingTime) AS ProcessingTime
FROM ProcessTable
GROUP BY ProcessingDate
ORDER BY ProcessingDate

请注意,如果日期实际上是精确到毫秒的日期,并且毫秒之间存在细微差异,那么您可能需要对日期字段进行一些舍入或转换,以使其正确分组到分钟。

您可以使用以下 SQL 将日期舍入为分钟:

MySql(来自 this answer)

SELECT SEC_TO_TIME((TIME_TO_SEC(ProcessingDate) DIV 60) * 60) AS TimeInMinutes

SQL Server

SELECT DateAdd(mi, DateDiff(mi, 0, ProcessingDate), 0) AS TimeInMinutes

关于mysql - SSRS取另一个字段的平均IF值相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39216193/

相关文章:

reporting-services - SSRS 计数行

vb.net - RDLC 调用过时的 SecurityAction 枚举

sql - MySQL慢查询

java如何从数据库中取出数据

sql - 定义可变长度的varchar

sql - 如何在 LIKE 语句中连接 % 和列名

php - 更新 PHP Mysql 表的最后 10 条记录

php - MySQL:如何通过此查询获得更多结果 WHERE IN

MYSQL按月、年分组并获取当月最高分

sql-server - 将仅订阅从 SSRS 2008 移动到 SSRS 2012