Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Среднее время решения  [new]
Marin_1a
Member

Откуда:
Сообщений: 125
Добрый день!
Требуется найти среднее время решения задачи,где OPEN_TIME - время открытия задачи,а CLOSE_TIME время закрытия задачи.
Таких задач много, мне необходимо получить средний результат.
Пробую так, не получается.В чем проблема?

SELECT
[CLOSE_TIME]
,[OPEN_TIME]
,CAST(AVG (CAST( (CLOSE_TIME - OPEN_TIME) AS DECIMAL (18, 6))) AS DATETIME ) AS CNT

FROM [Group_New_DB].[dbo].[INCIDENTSM1]
WHERE INF_DWORK_TIME IS NOT NULL AND DDC_RESOLVE_TIME IS NOT NULL
10 апр 17, 07:58    [20383522]     Ответить | Цитировать Сообщить модератору
 Re: Среднее время решения  [new]
IDVT
Member

Откуда:
Сообщений: 320
select Avg( DateDiff( MS, OPEN_TIME, CLOSE_TIME))
from Group_New_DB.dbo.INCIDENTSM1
where INF_DWORK_TIME is not null
      and DDC_RESOLVE_TIME is not null
10 апр 17, 08:26    [20383549]     Ответить | Цитировать Сообщить модератору
 Re: Среднее время решения  [new]
IDVT
Member

Откуда:
Сообщений: 320
дальше сами все сгруппируете...
10 апр 17, 08:27    [20383551]     Ответить | Цитировать Сообщить модератору
 Re: Среднее время решения  [new]
Marin_1a
Member

Откуда:
Сообщений: 125
IDVT,
Спасибо за Ваш пример, но тут выходит ошибка "the datediff function resulted in an overflow. the number of datepart separating two date/time instances is to large"
Как быть в этом случае?
Заранее благодарю!
10 апр 17, 08:35    [20383564]     Ответить | Цитировать Сообщить модератору
 Re: Среднее время решения  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
Marin_1a
IDVT,
Спасибо за Ваш пример, но тут выходит ошибка "the datediff function resulted in an overflow. the number of datepart separating two date/time instances is to large"
Как быть в этом случае?
Заранее благодарю!

сказать в чём же вы храните ваши даты
10 апр 17, 09:01    [20383598]     Ответить | Цитировать Сообщить модератору
 Re: Среднее время решения  [new]
Marin_1a
Member

Откуда:
Сообщений: 125
TaPaK,

даты хранятся в формате

yyyy-mm-dd hh-mi-ss
10 апр 17, 09:13    [20383634]     Ответить | Цитировать Сообщить модератору
 Re: Среднее время решения  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
Marin_1a
TaPaK,

даты хранятся в формате

yyyy-mm-dd hh-mi-ss


https://msdn.microsoft.com/ru-ru/library/ms187752.aspx?f=255&MSPPError=-2147217396
10 апр 17, 09:16    [20383648]     Ответить | Цитировать Сообщить модератору
 Re: Среднее время решения  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
Marin_1a
IDVT,
Спасибо за Ваш пример, но тут выходит ошибка "the datediff function resulted in an overflow. the number of datepart separating two date/time instances is to large"
Как быть в этом случае?
Заранее благодарю!

вам точно надо ms? DATEDUFF Тип возвращаемых данных int.
10 апр 17, 09:21    [20383655]     Ответить | Цитировать Сообщить модератору
 Re: Среднее время решения  [new]
Marin_1a
Member

Откуда:
Сообщений: 125
TaPaK,

Нет, нужно в таком же формате вывести, в каком он есть то есть гггг-мм-дд чч-мм-сс
10 апр 17, 09:24    [20383670]     Ответить | Цитировать Сообщить модератору
 Re: Среднее время решения  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
Marin_1a,
select Avg( CAST(CLOSE_TIME as datetime) - CAST(OPEN_TIME as datetime))
from Group_New_DB.dbo.INCIDENTSM1
where INF_DWORK_TIME is not null
      and DDC_RESOLVE_TIME is not null
10 апр 17, 09:40    [20383724]     Ответить | Цитировать Сообщить модератору
 Re: Среднее время решения  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
точнее нет конечно...

SELECT 
	CAST(AVG(CAST(CAST(modify_date as DATETIME) - CAST(create_date as DATETIME) as FLOAT)) as DATETIME)
FROM sys.objects
10 апр 17, 09:49    [20383747]     Ответить | Цитировать Сообщить модератору
 Re: Среднее время решения  [new]
Marin_1a
Member

Откуда:
Сообщений: 125
TaPaK,

Суууупер!!!!
Спасибо Вам огромное!
10 апр 17, 09:57    [20383781]     Ответить | Цитировать Сообщить модератору
 Re: Среднее время решения  [new]
Marin_1a
Member

Откуда:
Сообщений: 125
TaPaK,
Если не сложно,можете подсказать, как быть в случае,когда результат необходимо вывести в формате чч-мм-сс ?
10 апр 17, 11:58    [20384426]     Ответить | Цитировать Сообщить модератору
 Re: Среднее время решения  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
Marin_1a,

SELECT 
	CONVERT(varchar,CAST(AVG(CAST(CAST(modify_date as DATETIME) - CAST(create_date as DATETIME) as FLOAT)) as DATETIME),108)
FROM sys.objects
10 апр 17, 12:00    [20384432]     Ответить | Цитировать Сообщить модератору
 Re: Среднее время решения  [new]
Marin_1a
Member

Откуда:
Сообщений: 125
TaPaK,

Спасибо! Вы так помогли мне сегодня =))
10 апр 17, 13:19    [20384743]     Ответить | Цитировать Сообщить модератору
 Re: Среднее время решения  [new]
o-o
Guest
TaPaK
SELECT 
	CONVERT(varchar,CAST(AVG(CAST(CAST(modify_date as DATETIME) - CAST(create_date as DATETIME) as FLOAT)) as DATETIME),108)
FROM sys.objects

это не есть "время решения задачи",
это лишь временнАя часть разности.
у вас время решения всегда менее 24 часов?
вот в этом примере время 24 часа,
но код выведет 0:
with objects as
(
select cast ('20170401 13:00:00' as datetime) as create_date, 
       cast ('20170501 13:00:00' as datetime) as modify_date
       )

SELECT create_date, modify_date,
	CONVERT(varchar,CAST(CAST(CAST(modify_date as DATETIME) - CAST(create_date as DATETIME) as FLOAT) as DATETIME),108)
FROM objects;
---------------------
00:00:00
10 апр 17, 13:32    [20384808]     Ответить | Цитировать Сообщить модератору
 Re: Среднее время решения  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
o-o,

несомненно, логичнее разобрать DATEDIFF, хотя я бы отдал на клиент без CONVERT и отображал на нём
10 апр 17, 13:40    [20384849]     Ответить | Цитировать Сообщить модератору
 Re: Среднее время решения  [new]
o-o
Guest
просто раз у ней datediff в ms переполнил int,
то там разность явно вылазит за 24 часа
10 апр 17, 13:48    [20384897]     Ответить | Цитировать Сообщить модератору
 Re: Среднее время решения  [new]
rnk
Member

Откуда:
Сообщений: 126
Между прочим, в MSSQL 2016 появился DATEDIFF_BIG, выдающий bigint.
11 апр 17, 16:16    [20390240]     Ответить | Цитировать Сообщить модератору
 Re: Среднее время решения  [new]
o-o
Guest
rnk
Между прочим, в MSSQL 2016 появился DATEDIFF_BIG, выдающий bigint.

ну давайте еще и расстояние до солнца в мм мерить,
может, в 2020-ом сервере уже сделают флоат и он будет нам вываливать diff в наносекундах
в экспоненциальной форме.
нафигась в коде ms, если в ответе надо выдать в часах/минутах/секундах???
11 апр 17, 16:27    [20390294]     Ответить | Цитировать Сообщить модератору
 Re: Среднее время решения  [new]
Marin_1a
Member

Откуда:
Сообщений: 125
rnk,

MSSQL 2012 у меня
13 апр 17, 07:32    [20396648]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить