Sql server 在1分钟的时间间隔内获取平均值和最大值T-SQL
我有一个查询,它每隔1分钟提取记录数。我想比较一下平均值和最后一个值 我只得到总数,即计数(1)及其有效值。平均值和最大值总是返回为1,这是不准确的 这个SQL中是否有我缺少的东西Sql server 在1分钟的时间间隔内获取平均值和最大值T-SQL,sql-server,tsql,Sql Server,Tsql,我有一个查询,它每隔1分钟提取记录数。我想比较一下平均值和最后一个值 我只得到总数,即计数(1)及其有效值。平均值和最大值总是返回为1,这是不准确的 这个SQL中是否有我缺少的东西 SELECT FORMAT(timestamp, 'hh:mm') AS tm, AVG(1) AS avgOccurances, MAX(1) AS maxocc, COUNT(1) AS total FROM [history] WHERE t
SELECT
FORMAT(timestamp, 'hh:mm') AS tm,
AVG(1) AS avgOccurances,
MAX(1) AS maxocc,
COUNT(1) AS total
FROM
[history]
WHERE
timestamp BETWEEN '2018-04-16 14:00:00.707' AND '2018-04-18 15:00:00.707'
AND result = 'F'
GROUP BY
FORMAT(timestamp, 'hh:mm')
ORDER BY
tm ASC
结果
01:00 1 1 13
01:01 1 1 10
01:02 1 1 11
01:03 1 1 7
01:04 1 1 13
01:05 1 1 7
01:06 1 1 14
01:07 1 1 11
01:08 1 1 12
01:09 1 1 10
01:10 1 1 5
01:11 1 1 6
01:12 1 1 8
01:13 1 1 13
01:14 1 1 9
01:15 1 1 8
01:16 1 1 2
01:17 1 1 10
01:18 1 1 9
01:19 1 1 13
01:20 1 1 9
01:21 1 1 8
01:22 1 1 14
01:23 1 1 10
下面的查询假设每一行应具有以下内容:
- 每分钟计数
- 前一分钟的每分钟计数
- 计算发生次数最多的分钟数
WITH countbyminute AS (
SELECT
FORMAT(timestamp, 'hh:mm') AS tm,
COUNT(*) AS occurences
FROM history
GROUP BY FORMAT(timestamp, 'hh:mm')
)
SELECT
tm,
occurrences,
LAG(occurrences) OVER (ORDER BY TIMESTAMP) AS priorocc,
MAX(occurrences) OVER () AS maxocc
FROM countbyminute
ORDER BY tm;
我建议使用
HH:mm
作为格式字符串,它将使用24小时时钟(1:00PM为13:00)重新返回小时数。下面的查询假设每一行应具有以下内容:
- 每分钟计数
- 前一分钟的每分钟计数
- 计算发生次数最多的分钟数
WITH countbyminute AS (
SELECT
FORMAT(timestamp, 'hh:mm') AS tm,
COUNT(*) AS occurences
FROM history
GROUP BY FORMAT(timestamp, 'hh:mm')
)
SELECT
tm,
occurrences,
LAG(occurrences) OVER (ORDER BY TIMESTAMP) AS priorocc,
MAX(occurrences) OVER () AS maxocc
FROM countbyminute
ORDER BY tm;
我建议使用
HH:mm
作为格式字符串,它将使用24小时时钟(下午1:00PM为13:00)重新返回小时数。好吧……您将取文本1的平均值。它将永远是1。你想要的平均值是多少?与MAX相同。它是一个文本。命名列时要小心,你应该避免使用保留字作为列名。嗯……你是取1的平均值。它将永远是1。你想要的平均值是多少?与MAX相同。它是一个文本。而且要小心命名列,你应该避免使用保留字作为列名。有没有办法,我可以比较7个实例的平均值。例如,在过去的7天里,同一分钟的平均记录是多少?恐怕我不能回答这个问题。我确信这是可行的,但它涉及的内容要多得多,而且我在家里或工作中都没有SQL Server(根据最近的SQL Server经验,上面的答案是我脑子里想不出来的)。我建议用新的要求重新发布问题;有很多人可以回答这个问题。确保问题非常具体。上面的问题很好地显示了输出,但没有显示输入或表结构。包括这些将有助于得到一个好的答案。祝你好运有没有办法,我可以比较7个实例的平均值。例如,在过去的7天里,同一分钟的平均记录是多少?恐怕我不能回答这个问题。我确信这是可行的,但它涉及的内容要多得多,而且我在家里或工作中都没有SQL Server(根据最近的SQL Server经验,上面的答案是我脑子里想不出来的)。我建议用新的要求重新发布问题;有很多人可以回答这个问题。确保问题非常具体。上面的问题很好地显示了输出,但没有显示输入或表结构。包括这些将有助于得到一个好的答案。祝你好运