powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Можно ли сформировать такой Select?
12 сообщений из 12, страница 1 из 1
Можно ли сформировать такой Select?
    #32023049
asdf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста, можно ли с помощью select получить следующее:
есть таблица, содержащая к примеру 10000 записей, как получить набор данных содержащий:
(Rec1+Rec2+Rec3+Rec4+Rec5)/5 + (Rec6+Rec7+Rec8+Rec9+Rec10)/5 + ...
т.е. получить из 10000 записей всего 2000.
Rec-значение поля соответствующей записи.

Спасибо.
...
Рейтинг: 0 / 0
Можно ли сформировать такой Select?
    #32023050
MadDog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как Вы отличаете записи друг от друга и чем определяется порядок их следования? Есть соответствующий ключ?
...
Рейтинг: 0 / 0
Можно ли сформировать такой Select?
    #32023052
asdf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть поле типа datatime, данные пишутся в таблицу в строго определенные промежутки времени и задача состоит в том, чтобы не показывать каждое значение на графике, а сделать апроксимацию.
Наверно здесь больше подходит view (но хотелось бы select).
Спасибо
...
Рейтинг: 0 / 0
Можно ли сформировать такой Select?
    #32023054
Denis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в вашей таблице необходимо завести поле, отвечающее за группировку данных, те примерно так:
Rec Group_rec
Rec1 1
Rec2 1
Rec3 1
Rec4 1
Rec5 1
rec6 2
..... ...
тогда запрос будет выглядеть элементарно:
select sum(Rec)/count(*) from Table
group by Group_rec
...
Рейтинг: 0 / 0
Можно ли сформировать такой Select?
    #32023060
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а поле, отвечающее за группировку, можно получить подсчитав например разность в минутах для каждой записи от какой-нибудь определённой даты. Или еще целочисленно его поделить. Например среднее за 5 минут:

select dateadd(mi,datediff(mi,'19651031',date) % 5,'19651031' ), avg(rec)
from tbl
group by
datediff(mi,'19651031',date) % 5, dateadd(mi,datediff(mi,'19651031',date) % 5,'19651031' ),
...
Рейтинг: 0 / 0
Можно ли сформировать такой Select?
    #32023062
MadDog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник

Пока я собирался, уже ответили...

2 asdf:
Если "строго определенные промежутки времени" достаточно строги, чтобы можно было из значения поля datetime вычислить к какой пятерке (шестерке, семерке и т.д.) относится запись, то дальше все просто:
select некая_функция_от_даты, avg(Rec)
from table
group by некая_функция_от_даты
2 Denis:
по-моему запрос, в Вашем случае, должен выглядеть так:
select Group_rec, avg(Rec)
from table
group by Group_rec
...
Рейтинг: 0 / 0
Можно ли сформировать такой Select?
    #32023063
asdf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я хотел бы чтобы коэфициент усреднения был величиной переменной, но видимо придется делать так как вы говорите
...
Рейтинг: 0 / 0
Можно ли сформировать такой Select?
    #32023065
MadDog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 asdf:
Обратите внимание, что переменность будет зависеть от того, как Вы оформите функцию, преобразующую дату в группу. Просто передавайте ей количество строк группировки в виде параметра.
...
Рейтинг: 0 / 0
Можно ли сформировать такой Select?
    #32023071
Denis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Совершенно согласен с MadDog, просто как то вылетело из головы avg(). Но в принципе
Sum()/count(*) делает то же самое.
...
Рейтинг: 0 / 0
Можно ли сформировать такой Select?
    #32023090
asdf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
select avg(field) from Table
group by Group_rec

дает тот результат который должен получить, а вот с

select dateadd(mi,datediff(mi,'19651031',date) % 5,'19651031' ), avg(rec)
from tbl
group by
datediff(mi,'19651031',date) % 5, dateadd(mi,datediff(mi,'19651031',date) % 5,'19651031' )

ничего не получается, т.е. он считает что-то но совсем не то что нужно.
Если можно обясните по подробнее как добить это выражение.
Может лучше по E-mail?
...
Рейтинг: 0 / 0
Можно ли сформировать такой Select?
    #32023116
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пардон, бес попутал

вместо % надо конечно писать /

а по E-mail может и лучше, но для этого его надо как минумум оставить
...
Рейтинг: 0 / 0
Можно ли сформировать такой Select?
    #32023202
asdf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем большое спасибо, получил то что хотел:
select convert(datetime,avg(convert(decimal(13,,fld_time))), avg(fld_dat)
from my_table
group by datediff(ss,'20020212',fld_time)/2 --(/3, /4, /5, /6.....)

мастера, если здесь есть ошибки, сообщите пожалуйста.
Спасибо.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Можно ли сформировать такой Select?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]