Получите среднее и максимальное с интервалом в 1 минуту T-SQL - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть запрос, который извлекает количество записей с интервалом в 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  
    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

1 Ответ

0 голосов
/ 30 апреля 2018

В приведенном ниже запросе предполагается, что в каждой строке должно быть следующее:

  • Количество в минуту
  • Количество в минуту за предыдущую минуту
  • Считайте в минуту с наибольшим количеством вхождений

Если это неправильно, просто дайте мне знать. Вот запрос:

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-часовых часов (13:00 как 13:00).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...