Sql 在一个查询中平均一列两次
我有一个表,其中包含以下内容:Sql 在一个查询中平均一列两次,sql,tsql,Sql,Tsql,我有一个表,其中包含以下内容: ID Node LoadTime DateTimeCST Failed ----------------------------------------- 我正在尝试编写一个查询,该查询将返回下表(节点是不同的) 所以,我基本上是尝试取过去24小时的平均LoadTime,然后是另一个平均LoadTime,它对LoadTime表中的所有数据进行平均。这是我用来计算今天平均值的查询 SELECT DISTINCT Node, AVG(LoadTime
ID Node LoadTime DateTimeCST Failed
-----------------------------------------
我正在尝试编写一个查询,该查询将返回下表(节点是不同的)
所以,我基本上是尝试取过去24小时的平均LoadTime,然后是另一个平均LoadTime,它对LoadTime表中的所有数据进行平均。这是我用来计算今天平均值的查询
SELECT DISTINCT Node, AVG(LoadTime)
FROM dbo.Table
WHERE Failed != 1
AND DATEDIFF(day, DateTimeCST, GETDATE()) = 0
GROUP BY Node
我需要在这个查询中添加什么才能同时获得所有记录的平均加载时间?任何帮助都将不胜感激。谢谢 由于识别TodaysAverageLoadTime和HistoricalLoadTime记录的标准不同,因此不能在单个查询中完成。但您可以按如下方式进行模拟:
SELECT
Node,
ISNULL(TodaysAvgLoadTime, 0)
ISNULL(HistoricalLoadTime, 0)
FROM
(
SELECT
Node,
AVG(LoadTime) 'TodaysAvgLoadTime'
FROM
dbo.Table
WHERE
Failed != 1
AND DATEDIFF(day, DateTimeCST, GETDATE()) = 0
GROUP BY Node
) AS A
FULL OUTER JOIN
(
SELECT
Node,
AVG(LoadTime) 'HistoricalLoadTime'
FROM
dbo.Table
WHERE
Failed != 1
GROUP BY Node
) AS B
ON A.Node = B.Node
您可以使用多个子查询来获取数据以及它们之间的连接。比如:
SELECT Node, t1.avg, t2.avg FROM
(SELECT DISTINCT Node, AVG(LoadTime) AS avg
FROM dbo.Table,
WHERE Failed != 1
AND DATEDIFF(day, DateTimeCST, GETDATE()) = 0
GROUP BY Node) t1,
(SELECT DISTINCT Node, AVG(LoadTime) AS avg
FROM dbo.Table,
WHERE Failed != 1
GROUP BY Node) t2
WHERE t1.node = t2.node
SELECT Node, t1.avg, t2.avg FROM
(SELECT DISTINCT Node, AVG(LoadTime) AS avg
FROM dbo.Table,
WHERE Failed != 1
AND DATEDIFF(day, DateTimeCST, GETDATE()) = 0
GROUP BY Node) t1,
(SELECT DISTINCT Node, AVG(LoadTime) AS avg
FROM dbo.Table,
WHERE Failed != 1
GROUP BY Node) t2
WHERE t1.node = t2.node