2012-01-23 2 views
1

У меня есть таблица, как этотSUM и средний

ID, Connected, Disconnected 

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

SELECT ID, 
CONVERT (INT, SUM (
DATEDIFF(second, Connected, Disconnected)))/60.00 

И еще мне нужно найти среднее время соединения (это выше, деленное на количество подключений (видимость идентификаторов) для каждого идентификатора.

Что-то вроде этого (что не работает)

SELECT ID, 
CONVERT (INT, SUM (
DATEDIFF(second, Connected, Disconnected)))/60.00, 
CONVERT (INT, SUM (
DATEDIFF(second, Connected, Disconnected)))/60.00/(SELECT COUNT ID) 

Как это сделать?

Спасибо.

ответ

1

Другое решение: Добавить еще один столбец в таблицу и назовите его Diff (или что-то) в расчетном режиме вы установите «компьютерную спецификацию столбца» к «(DateDiff (второй, [Connected], [Отключено])) " Теперь у вас есть столбец с вычисленным значением diff!

Тогда вы можете группировать без агрегата или ошибки подзапроса :)

SELECT ID, AVG(Diff)/60 -- Diff = Your computed column 
FROM YourTable 
GROUP BY ID 

Надеется, что это помогает ..

3
SELECT ID, AVG(CONVERT (INT, SUM (DATEDIFF(second, Connected, Disconnected)))/60.00) 
GROUP BY ID 
+0

Я получаю следующее сообщение об ошибке: Msg 130, Level 15, State 1, Line 51 Невозможно выполнить агрегатную функцию для выражения, содержащего агрегат или подзапрос. –

Смежные вопросы