Pergunta

Eu tenho uma tabela de madeira usada para o dispositivo "batimentos cardíacos". Eu tenho esses dispositivos de rede que check-in/batimento cardíaco com o servidor a cada 10 minutos. Estamos querendo estatísticas sobre quando eles perderem o horário de check-in programado. Eu tenho uma consulta que pode fazer isso por dispositivo, mas preciso que seja modificada para manusear em todos os dispositivos.

A mesa de batimentos cardíacos se parece com o seguinte:

CREATE TABLE [dbo].[DeviceHeartbeat](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [DeviceId] [int] NULL,
    [CheckinTime] [datetime] NULL,
    [Runtime] [int] NULL,
PRIMARY KEY CLUSTERED 
([Id] ASC)) ON [PRIMARY]

O dispositivo verifica o servidor, o servidor adiciona uma linha a esta tabela com seu ID, o checkIntime e o tempo de execução do dispositivo (um valor de hardware enviado pelo dispositivo). A consulta que tenho atualmente se parece com a seguinte:

WITH t AS
(
  SELECT Checkintime, rn = ROW_NUMBER() OVER (ORDER BY Checkintime)
  FROM DeviceHeartbeat
  WHERE DeviceId = 1112
),
x AS
(
  SELECT d = DATEDIFF(MINUTE, t1.Checkintime, t2.Checkintime)
  FROM t AS t1
  INNER JOIN t AS t2
  ON t1.rn = t2.rn - 1
),
y AS
(
  SELECT stats = CASE WHEN d < 10 THEN ' < 10 '
    WHEN d BETWEEN 10 AND 11 THEN '10 - 11 '
    WHEN d BETWEEN 11 AND 12 THEN '11 - 12 '
    ELSE '+12 ' END + ' minutes:'
  FROM x
)
SELECT stats, COUNT(*) FROM y GROUP BY stats;

Esta consulta é limitada a um único dispositivo especificado. Exemplo de resultados são assim:

stats                  
----------------- ---- 
 < 10  minutes:   1536
10 - 11  minutes: 425
11 - 12  minutes: 952
+12  minutes:     160

Idealmente, estou preocupado apenas com check-ins com mais de 12 minutos. Então, o que eu estava querendo era uma lista de dispositivos que fizeram check-ins com mais de 12 minutos, ordenados por suas contagens. Isso me permitirá ver os 10 ou 20 dispositivos principais que têm mais de 12 minutos de check-in, alertando-me para dispositivos problemáticos. Algo como:

DeviceId   CheckinsOver12Mins
---------- -------------------
1112       160
1108       152
15         114
106        86

Sugestões?

Foi útil?

Solução

O escopo da regra:

  • Se você defini-los no serviço de pesquisa, é válido para todos webplications associados a esse serviço de pesquisa.

  • Se você defini-lo no nível subsite / web, é válido para o contexto pesquisa feita nesse site.

  • Se você defini-lo na coleção do site é Válido para o site e todos os subsites.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top