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

Откуда:
Сообщений: 6
Всем доброго дня,
Не могли бы вы помочь с составлением логики SQL запроса.

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

| Job | Submitted | Execution Time
| A | 17-11-14 | 00:00:05
| B | 22-11-14 | 00:01:05
| A | 25-11-14 | 00:00:15
| A | 26-12-14 | 00:03:05
| B | 27-12-14 | 00:00:35
| B | 28-12-14 | 00:00:11


Задача состоит в том, чтобы вытащить список который бы представлял статистику по месяцам, с указанием имени репорта, количества запусков , и среднего арифметического Execution time. Чтото вроде этого:

Job Month Count Avg time
A November 2 00:00:28
B November 1 00:01:05
A December 1 00:03:05
.......


Заранее спасибо.
30 май 17, 09:20    [20521952]     Ответить | Цитировать Сообщить модератору
 Re: ПОмощь в составлении SQL запроса  [new]
Добрый Э - Эх
Guest
kirill__Z,

group by по convert(поле с датой) + avg
30 май 17, 09:23    [20521962]     Ответить | Цитировать Сообщить модератору
 Re: ПОмощь в составлении SQL запроса  [new]
Добрый Э - Эх
Guest
чутка соврал
Добрый Э - Эх
kirill__Z,

group by по convert(поле с датой) datename(month,<поле с датой>) + avg
30 май 17, 09:29    [20521979]     Ответить | Цитировать Сообщить модератору
 Re: ПОмощь в составлении SQL запроса  [new]
kirill__Z
Member

Откуда:
Сообщений: 6
Я додумался только до следующего скрипта

select
distinct(JOB),
count(JOB) as countt,
cast(cast(avg(cast(CAST(Execution_Time as datetime) as float)) as datetime) as time) AvgTime
from Table
group by JOB

Но теперь как это все разделить по месяцам (колонка submitted)?
30 май 17, 11:02    [20522459]     Ответить | Цитировать Сообщить модератору
 Re: ПОмощь в составлении SQL запроса  [new]
TaPaK
Member

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

а DISTINCT зачем? добавьте submitted в SELECT и GROUP BY если я правильно вас понял
30 май 17, 11:06    [20522478]     Ответить | Цитировать Сообщить модератору
 Re: ПОмощь в составлении SQL запроса  [new]
kirill__Z
Member

Откуда:
Сообщений: 6
Спасибо за совет.

А как поступить если столбец submitted представляет собой 'YYYY-MM-DD HH:MM:SS' ? Как сгруппировать по месяцу?
Т.к. job-ы могут гоняться по нескольку раз в день.
30 май 17, 11:12    [20522509]     Ответить | Цитировать Сообщить модератору
 Re: ПОмощь в составлении SQL запроса  [new]
TaPaK
Member

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

DATEDIFF(month,submitted,0)
30 май 17, 11:15    [20522523]     Ответить | Цитировать Сообщить модератору
 Re: ПОмощь в составлении SQL запроса  [new]
kirill__Z
Member

Откуда:
Сообщений: 6
ПОлучился следующий запрос

select
JOB,
count(JOB) as countt,
cast(cast(avg(cast(CAST(Execution_Time as datetime) as float)) as datetime) as time) AvgTime,
DateDiff(month,submitted,0)
from Table
group by JOB , submitted

Но в столбце datediff все значения выдают '-1403'
30 май 17, 11:27    [20522594]     Ответить | Цитировать Сообщить модератору
 Re: ПОмощь в составлении SQL запроса  [new]
kirill__Z
Member

Откуда:
Сообщений: 6
Точнее большинство значений со знаком минус, -1299 , -1300 и тд.
30 май 17, 11:28    [20522597]     Ответить | Цитировать Сообщить модератору
 Re: ПОмощь в составлении SQL запроса  [new]
TaPaK
Member

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

ну попутал местами :)DATEDIFF(month,0,submitted)
зы количеством CAST вы пытаетесь кого-то призвать?
30 май 17, 11:31    [20522619]     Ответить | Цитировать Сообщить модератору
 Re: ПОмощь в составлении SQL запроса  [new]
kirill__Z
Member

Откуда:
Сообщений: 6
Нашел эту конструкцию на просторах интернета, т.к. Execution Time хранится в формате varchar.
По поводу DateDiff, как понимаю конструкция возвращает разницу в месяцах между датой указанной мной и ~1900 годом. А есть ли спросов чтобы выяснить точный месяц (январь, февраль и тд) , или нужно будет через IF разруливать?
30 май 17, 11:41    [20522660]     Ответить | Цитировать Сообщить модератору
 Re: ПОмощь в составлении SQL запроса  [new]
TaPaK
Member

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

автор
чтобы выяснить точный месяц (январь, февраль и тд) ,

группировать без года это хрень. если вам пофиг , то замените на DATENAME(month,submitted)
30 май 17, 11:44    [20522676]     Ответить | Цитировать Сообщить модератору
 Re: ПОмощь в составлении SQL запроса  [new]
s_ustinov
Member

Откуда: Munchen, DE
Сообщений: 2201
kirill__Z
По поводу DateDiff, как понимаю конструкция возвращает разницу в месяцах между датой указанной мной и ~1900 годом. А есть ли спросов чтобы выяснить точный месяц (январь, февраль и тд) , или нужно будет через IF разруливать?

DATEPART (year, CAST(Execution_Time as datetime)), DATEPART (month, CAST(Execution_Time as datetime))
30 май 17, 22:49    [20525544]     Ответить | Цитировать Сообщить модератору
 Re: ПОмощь в составлении SQL запроса  [new]
iap
Member

Откуда: Москва
Сообщений: 46983
kirill__Z
А как поступить если столбец submitted представляет собой 'YYYY-MM-DD HH:MM:SS' ? Как сгруппировать по месяцу?
GROUP BY LEFT(Execution_Time,7)
31 май 17, 11:38    [20526639]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить