У меня есть таблица SQL Server, как это:Top 10 событий длительностью
TimeStamp (datetime)| Alarm (string) | Active (bool)
01.08.2013 1:30:05 | Alarm 1 | false
01.08.2013 1:29:54 | Alarm 2 | true
01.08.2013 1:28:43 | Alarm 1 | true
01.08.2013 1:27:21 | Alarm 3 | false
01.08.2013 1:26:35 | Alarm 1 | false
01.08.2013 1:25:34 | Alarm 1 | true
я уже отображать верхние вхождений 10 сигнализации:
SELECT TOP 10 Alarm, COUNT(Alarm) AS Occurrence
FROM MyTable
WHERE (Active = 'True')
GROUP BY Alarm
ORDER BY Occurrence DESC
теперь нужно времени тревоги топ-10
Цель состоит в том, чтобы иметь сумму продолжительности (от истины до ложной) для каждого отдельного сигнала тревоги.
Я действительно заблокирован этим, я предполагаю, что мне нужно итерировать каждую строку и суммировать значение времени для каждого встречного сигнала.
Но я не знаю, как это сделать с SQL-запросом. Любая помощь или направление будут оценены.
Заранее спасибо
@Roman Пекар: SQL сервер 2008
@ Гордон Линофф: Результат, ожидаемый => верх 10 длительность сигнала тревоги (если тревога верно))
time[min] | Alarm
50 | Alarm 2
34 | Alarm 3
22 | Alarm 1
...
Какая версия SQL Server у вас есть? –
Просьба представить образец. Неясно, что вы хотите, чтобы результат был для данных в вопросе. –
И как вы можете рассчитать время для сигналов тревоги 2 и 3, так как есть только одно вхождение каждого (Тревога 2 = 1 истина и Тревога 3 = 1 ложь)? Кроме того, для Тревоги 1 вы хотите 2 строки или только 1. Я имею в виду, вы хотите рассчитать общую продолжительность или продолжительность, 1:25:34 до 1:26:35, а затем 1:28:43 до 1 : 30: 05? –