SQL查询计数和数学运算

时间:2013-10-09 17:01:07

标签: sql sql-server tsql math subquery

我有一个独特的查询请求。

我运行此查询:

select * from documentationissues
where dateAdded is not null
and dateAdded >= '2013-10-09 10:37:15.483'

这将返回我,但是自dateAdded子句以来已经插入了很多行。我想要做的是在查询中完成所有数学运算。

我需要弄清楚自dateAdded子句以来经过了多少分钟。 我需要计算返回的行数。 然后我需要弄清楚平均每分钟平均完成多少行,然后每小时。 然后说如果要完成6,000,000个文件。以平均日费率处理所有文件需要多少天。

如果我现在运行查询,则截至今天上午10:56:15返回2100结果。

所以这将是19分钟过去的,大约每分钟110行,每小时约6600。

我不确定如何使用分组等在select语句中完成所有数学运算。

2 个答案:

答案 0 :(得分:3)

这是另一个选项,其中还包括您要求的所有字段:

SELECT M.RowsReturned, M.MinutesPassed,
       M.RowsReturned / M.MinutesPassed AS AvgPerMinute,
       M.RowsReturned / M.MinutesPassed * 60 AS AvgPerHour,
       6000000 / M.RowsReturned  / M.MinutesPassed / 1440 AS DaysToProcess
FROM (
   SELECT COUNT(*) AS RowsReturned, 
   DATEDIFF(minute, '2013-10-09 10:37:15.483', CURRENT_TIMESTAMP) AS MinutesPassed
   FROM documentationissues
   WHERE dateAdded is NOT NULL
   AND dateAdded >= '2013-10-09 10:37:15.483'
) AS M

答案 1 :(得分:2)

试试这个:

SELECT COUNT(*)/DATEDIFF(minute, '2013-10-09 10:37:15.483', GETDATE()) AS AvgPerMin,
        COUNT(*)/DATEDIFF(minute, '2013-10-09 10:37:15.483', GETDATE()) * 60 AS AvgPerHr
from documentationissues
where dateAdded is not null
and dateAdded >= '2013-10-09 10:37:15.483'