Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Группировка по часам  [new]
Oda412
Member

Откуда:
Сообщений: 42
Здравствуйте! У меня есть БД, в которой данные записываются раз в секунду или чуть реже. Подскажите, пожалуйста, как написать запрос, который выводит на экран данные, усредненные по часу?
Спасибо
11 авг 14, 11:41    [16425021]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по часам  [new]
Glory
Member

Откуда:
Сообщений: 104751
Oda412
Подскажите, пожалуйста, как написать запрос, который выводит на экран данные, усредненные по часу?

Наверное выбрать из даты-времени дату и час. И сгруппировать.
11 авг 14, 11:42    [16425023]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по часам  [new]
Oda412
Member

Откуда:
Сообщений: 42
Glory, хорошо, но как это сделать?
У меня БД -Access. Я выбираю два столбца - первый с датой, второй - со значениями показаний, которые надо усреднить. Первый столбец в формате "dd.mm.yyyy чч:мм:сс", второй - просто числовой
11 авг 14, 11:51    [16425082]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по часам  [new]
Konst_One
Member

Откуда:
Сообщений: 11600
может в другом форуме вам подскажут (по MS Access)?
или у вас adp проект?
11 авг 14, 11:53    [16425095]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по часам  [new]
Glory
Member

Откуда:
Сообщений: 104751
Oda412
У меня БД -Access.

А вопрос почему тогда в форуме по MSSQL ?

Oda412
но как это сделать?

Найти в хелпе способы работы с датой ?
11 авг 14, 11:53    [16425102]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по часам  [new]
Oda412
Member

Откуда:
Сообщений: 42
Konst_One, я, конечно, попробую еще на форум Access зайти. Но дело в том, что внутри Access я пишу запрос прямо на SQL
11 авг 14, 11:54    [16425105]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по часам  [new]
Konst_One
Member

Откуда:
Сообщений: 11600
Oda412
Konst_One, я, конечно, попробую еще на форум Access зайти. Но дело в том, что внутри Access я пишу запрос прямо на SQL


это конечно хорошо, но вы уверены , что вам нужен именно синтаксис запроса для MS SQL Server ?
11 авг 14, 11:55    [16425119]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по часам  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4832
Oda412,

Вы сконвертировать дату в такую маску можете
"dd.mm.yyyy чч",

по неё сгруппируйте
11 авг 14, 11:55    [16425123]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по часам  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8577
Oda412, Вы пишете запрос к какой базе - ACCESS или MS SQL?
11 авг 14, 11:56    [16425134]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по часам  [new]
Oda412
Member

Откуда:
Сообщений: 42
a_voronin, у меня следующий код:
SELECT Данные.Time, Данные.`4A1` FROM Данные
Помогите, пожалуйста, столбец Данные.Time привести к виду, про который Вы пишете. И как потом усреднить столбец Данные.`4A1`?
Я вообще пока не умею ничего)
11 авг 14, 12:01    [16425186]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по часам  [new]
Konst_One
Member

Откуда:
Сообщений: 11600
SELECT AVG(LiveTime) as [Среднее время, мин (в разрезе часа)]
      ,DATEPART(HOUR,[Created]) [Час]
FROM dbo.[Session]
where Created > GETDATE() - 30
group by DATEPART(HOUR,[Created])


не уверен, что вас точно понял, но вот как пример
11 авг 14, 12:06    [16425232]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по часам  [new]
Oda412
Member

Откуда:
Сообщений: 42
Konst_One,
у меня есть столбец Данные.Time - в нем дата с часами, минутами и секундами
Второй столбец - Данные.4A1. - в нем сами данные (показания прибора)
Дело в том, что во втором столбце данные записываются каждую секунду. Чтобы их уменьшить, их надо усреднить. То есть, взять все данные из второго столбца, которые укладываются в 1 час первого столбца и усреднить.
Я просто не соображу, куда какой столбец вписывать, основываясь на Вашем коде :(
11 авг 14, 12:12    [16425296]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по часам  [new]
Konst_One
Member

Откуда:
Сообщений: 11600
SELECT AVG([4A1]) as [Среднее (в разрезе часа)]
      ,DATEPART(HOUR,[Time]) [Час]
FROM [Данные]
group by DATEPART(HOUR,[Time])
11 авг 14, 12:15    [16425307]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по часам  [new]
Офисный Хомячок
Member

Откуда: Офис
Сообщений: 1358
Oda412
a_voronin, у меня следующий код:
SELECT Данные.Time, Данные.`4A1` FROM Данные
Помогите, пожалуйста, столбец Данные.Time привести к виду, про который Вы пишете. И как потом усреднить столбец Данные.`4A1`?
Я вообще пока не умею ничего)


SELECT Данные.Date,HOUR(Данные.Time), Avg(Данные.`4A1`) FROM Данные
GROUP BY Данные.Date,HOUR(Данные.Time)

Я не знаю синтаксиса БД -Access, но скорее всего должно получиться как-то так.
11 авг 14, 12:15    [16425311]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по часам  [new]
Офисный Хомячок
Member

Откуда: Офис
Сообщений: 1358
Konst_One
SELECT AVG([4A1]) as [Среднее (в разрезе часа)]
      ,DATEPART(HOUR,[Time]) [Час]
FROM [Данные]
group by DATEPART(HOUR,[Time])


А в вашем примере разве в результате будет не 24 строки максимум?
11 авг 14, 12:17    [16425332]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по часам  [new]
Konst_One
Member

Откуда:
Сообщений: 11600
именно так, ТС не уточняла на счёт разреза в плане дня или месяца и тд и тп
11 авг 14, 12:18    [16425342]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по часам  [new]
Oda412
Member

Откуда:
Сообщений: 42
Офисный Хомячок, спасибо, он мне вывел среднее за все 24 часа, без дней, то есть, всего 24 строчки))) а у меня несколько недель данных, нужно по каждому дню за каждый час

Я не совсем поняла, что такое Данные.Date? Я это просто удалила, чтобы Ваш пример заработал. Он заработал, но только так, как я написала выше..
11 авг 14, 12:20    [16425361]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по часам  [new]
Офисный Хомячок
Member

Откуда: Офис
Сообщений: 1358
Oda412
Офисный Хомячок, спасибо, он мне вывел среднее за все 24 часа, без дней, то есть, всего 24 строчки))) а у меня несколько недель данных, нужно по каждому дню за каждый час

Я не совсем поняла, что такое Данные.Date? Я это просто удалила, чтобы Ваш пример заработал. Он заработал, но только так, как я написала выше..


Я наивно предположил, что у вас есть поле где хранится дата, и что оно называется Данные.Date.
11 авг 14, 12:23    [16425378]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по часам  [new]
Oda412
Member

Откуда:
Сообщений: 42
Офисный Хомячок,

у меня есть столбец Данные.Time - в нем дата с часами, минутами и секундами
Второй столбец - Данные.4A1. - в нем сами данные (показания прибора)
Дело в том, что во втором столбце данные записываются каждую секунду. Чтобы их уменьшить, их надо усреднить. То есть, взять все данные из второго столбца, которые укладываются в 1 час первого столбца и усреднить.
11 авг 14, 12:24    [16425389]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по часам  [new]
Konst_One
Member

Откуда:
Сообщений: 11600
SELECT 
DATEPART(DAY,[Time]) as [День]
,DATEPART(HOUR,[Time]) as [Час]
AVG([4A1]) as [Среднее (в разрезе часа)]     
FROM [Данные]
group by DATEPART(DAY,[Time]), DATEPART(HOUR,[Time])
ORDER BY DATEPART(DAY,[Time])
11 авг 14, 12:26    [16425418]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по часам  [new]
Konst_One
Member

Откуда:
Сообщений: 11600
запятую сами поставьте
11 авг 14, 12:27    [16425429]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по часам  [new]
Офисный Хомячок
Member

Откуда: Офис
Сообщений: 1358
Oda412
Офисный Хомячок,

у меня есть столбец Данные.Time - в нем дата с часами, минутами и секундами
Второй столбец - Данные.4A1. - в нем сами данные (показания прибора)
Дело в том, что во втором столбце данные записываются каждую секунду. Чтобы их уменьшить, их надо усреднить. То есть, взять все данные из второго столбца, которые укладываются в 1 час первого столбца и усреднить.


SELECT YEAR(Данные.Time) AS Год
, MONTH(Данные.Time) AS Месяц
, DAY(Данные.Time) AS День
, HOUR(Данные.Time) AS Час
, Avg(Данные.`4A1`)  AS Значение
FROM Данные
GROUP BY YEAR(Данные.Time), MONTH(Данные.Time), DAY(Данные.Time), HOUR(Данные.Time)
11 авг 14, 12:32    [16425485]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по часам  [new]
Oda412
Member

Откуда:
Сообщений: 42
Офисный Хомячок, спасибо, это то, что нужно! Только один маленький вопросик еще: как сделать так, чтобы в самом результате запроса дата была, как прежде (за исключением минут), чтобы не разносить по разным полям день, месяц, часы?
11 авг 14, 12:37    [16425521]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по часам  [new]
Oda412
Member

Откуда:
Сообщений: 42
Офисный Хомячок, я пыталась написать так:
SELECT Данные.Time
, Avg(Данные.`4A1`) AS Значение
FROM Данные
GROUP BY YEAR(Данные.Time), MONTH(Данные.Time), DAY(Данные.Time), HOUR(Данные.Time)

но на меня ругаются)
11 авг 14, 12:38    [16425530]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по часам  [new]
Офисный Хомячок
Member

Откуда: Офис
Сообщений: 1358
Oda412
Офисный Хомячок, я пыталась написать так:
SELECT MIN(Данные.Time) AS Дата
, Avg(Данные.`4A1`)  AS Значение
FROM Данные
GROUP BY YEAR(Данные.Time), MONTH(Данные.Time), DAY(Данные.Time), HOUR(Данные.Time)


но на меня ругаются)


Советую почитать
http://office.microsoft.com/ru-ru/access-help/HP003084017.aspx

PS Еще из результата надо будет удалить минут и секунды и т.д., как это лучше сделать спросите на форуме Access.
11 авг 14, 12:46    [16425594]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить