powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Группировка данных по диапазону дат что входит в более широкий диапазон дат.
25 сообщений из 46, страница 1 из 2
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
    #39715160
bormman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот столкнулся с такой задачей.
Имеем таблицу
IDТЕМПЕРАТУРАОСАДКИДАТА
Поле ДАТА содержит даты с 1995 по 2018 год. Необходимо сделать такую выборку:
AVG(ТЕМПЕРАТУРА), SUM(ОСАДКИ)... за периоды с ноября по март в общем периоде с 2000 по 2018 г., т.е. :

Должно быть в одном SQL запросе....
AVG(ТЕМПЕРАТУРА), SUM(ОСАДКИ) с 01.11.2000 по 01.03.2001 (т.е. тут идет группировка по этому диапазону)
AVG(ТЕМПЕРАТУРА), SUM(ОСАДКИ) с 01.11.2001 по 01.03.2002 (...то же)
AVG(ТЕМПЕРАТУРА), SUM(ОСАДКИ) с 01.11.2002 по 01.03.2003... и т.д.

Проблема именно с вытаскиванием данных по таким вот множественным диапазонам. Возможно ли сформировать запрос с такой сложной выборкой по датам.
Буду благодарен за помощь.
...
Рейтинг: 0 / 0
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
    #39715178
bormman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да еще забыл сказать, общий период может меняться, а неизменен только малый период (ноябрь-март).... вот потому и проблема, если бы общий период был статичен, то можно просто перечислить все через Between * And * Or Between * And *
...
Рейтинг: 0 / 0
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
    #39715185
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
AVG(ТЕМПЕРАТУРА*-(Дата Between #11/01/2000# And #03/01/2001#)) As A1, SUM(ОСАДКИ*-(Дата Between #11/01/2000# And #03/01/2001#) As S1,
и так далее...
...
Рейтинг: 0 / 0
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
    #39715186
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Sum добавить правую закрывающую скобку.

Пишу с планшета, может, еще что пропущено...
...
Рейтинг: 0 / 0
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
    #39715187
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
SELECT Диапазоны.Диапазон, AVG(Данные.Температура) As ttt, SUM(Данные.Осадки) As ooo
FROM Диапазоны INNER JOIN Данные ON (Данные.Дата Between Диапазоны.ДатаНачала AND Диапазоны.ДатаОкончания) 
Group by Диапазоны.Диапазон


Не?
...
Рейтинг: 0 / 0
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
    #39715192
bormman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle,
спасибо, но во 2 сообщ. я написал, что общий период (2000-2018) будет меняться, неизменно только ноябрь-март

и что делает эта конструкция??
Код: sql
1.
AVG(ТЕМПЕРАТУРА*-(Дата Between #11/01/2000# And #03/01/2001#))

... это что, из поля ТЕМПЕРАТУРА вычитается дата?

Так на всякий случай уточню:
В поле ТЕМПЕРАТУРА содерж. данные типа Single
В поле ОСАДКИ содерж. данные типа Long
В поле ДАТА содерж. данные типа Date
...
Рейтинг: 0 / 0
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
    #39715198
bormman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Predeclared, спасибо
что имеется в виду под
Код: sql
1.
SELECT Диапазоны.Диапазон


Имею такую таблицу: имя МЕТЕО
IDТЕМПЕРАТУРАОСАДКИ ДАТА
...
Рейтинг: 0 / 0
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
    #39715201
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bormman... что имеется в виду ...
Таблица, описывающая диапазоны, отличные от стандартных (неделя, месяц, квартал, год).
...
Рейтинг: 0 / 0
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
    #39715204
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bormman __Michelle,
спасибо, но во 2 сообщ. я написал, что общий период (2000-2018) будет меняться, неизменно только ноябрь-март От меня это не вскользнуло.
Именно это и учтено.
Вам нужно только продолжить текст запроса по аналогии с приведенной строкой, меняя значения границ периодов.
bormmanи что делает эта конструкция??
Код: sql
1.
AVG(ТЕМПЕРАТУРА*-(Дата Between #11/01/2000# And #03/01/2001#))

... это что, из поля ТЕМПЕРАТУРА вычитается дата? Нет, конечно.
Попробуйте выполнить запрос. А потом объясню, если потребуется.
Сейчас писать неудобно.
bormmanТак на всякий случай уточню:
В поле ТЕМПЕРАТУРА содерж. данные типа Single
В поле ОСАДКИ содерж. данные типа Long
В поле ДАТА содерж. данные типа Date Спасибо.
Запрос с этим справится.
...
Рейтинг: 0 / 0
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
    #39715210
bormman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
@ __Michelle
вот так ?
Код: sql
1.
AVG(ТЕМПЕРАТУРА*-(Дата Between #11/01/2000# And #03/01/2001#)) As A1, SUM(ОСАДКИ*-(Дата Between #11/01/2000# And #03/01/2001#) As S1, AVG(ТЕМПЕРАТУРА*-(Дата Between #11/01/2001# And #03/01/2002#)) As A2, SUM(ОСАДКИ*-(Дата Between #11/01/2001# And #03/01/2002#) As S2.......
...
Рейтинг: 0 / 0
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
    #39715213
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bormman@ __Michelle
вот так ?
Код: sql
1.
2.
3.
4.
AVG(ТЕМПЕРАТУРА*-(Дата Between #11/01/2000# And #03/01/2001#)) As A1, 
SUM(ОСАДКИ*-(Дата Between #11/01/2000# And #03/01/2001#)) As S1, 
AVG(ТЕМПЕРАТУРА*-(Дата Between #11/01/2001# And #03/01/2002#)) As A2, 
SUM(ОСАДКИ*-(Дата Between #11/01/2001# And #03/01/2002#)) As S2.......


В принципе, так.
Но скобки нужно добавить, как сказано в 21699786 .
Красным помечено.
...
Рейтинг: 0 / 0
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
    #39715216
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bormman,

Попробуйте сначала на двух-трех диапазонах, чтобы скорость выполнения посмотреть.
...
Рейтинг: 0 / 0
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
    #39715217
bormman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
@ __Michelle , спасибо что помогаете, однако....
может конечно я туплю, но как мне поможет такая конструкция если в ней так явно перечисляются диапазоны ? а если нужен будет диапазон с 2003 по 2005 то что тогда переписывать запрос под него? Да и если так явно перечислять то можно просто через Between.
...
Рейтинг: 0 / 0
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
    #39715218
bormman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
или каким-то образом будет отрабатывать только тот диапазон что я задам? :)
...
Рейтинг: 0 / 0
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
    #39715231
bormman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
@ __Michelle
афигеть, таки да оно считает, правда выдает резалт в одну строку но считает.... какой интересный финт :)
поясните мне этот момент плиз AVG( ТЕМПЕРАТУРА*-(Дата Between #11/01/2000# And #03/01/2001#) )
...
Рейтинг: 0 / 0
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
    #39715234
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bormman,

Так какой запрос все-таки нужен?

Вы же писали, что вроде один запрос должен возвращать 18 средних и 18 сумм
за 18 периодов: ноябрь2000-март2001, ноябрь2001-март2002, ...., ноябрь2017-март2018.

Или это не так?
...
Рейтинг: 0 / 0
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
    #39715237
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bormman,

А зачем Вы мне @ прицепляете?
Это что-то значит?
...
Рейтинг: 0 / 0
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
    #39715243
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
AVG(ТЕМПЕРАТУРА*-(Дата Between #11/01/2000# And #03/01/2001#))


ТЕМПЕРАТУРА умножается на результат логической операции сравнения (Дата Between #11/01/2000# And #03/01/2001#).
Если Дата в нужном диапазоне - результат равен -1 (минус единице).
Если нет - результат равен 0 (нулю).

То есть, получаем для каждой даты следующее:
либо ТЕМПЕРАТУРА*-(-1), то есть, просто ТЕМПЕРАТУРА,
либо ТЕМПЕРАТУРА*0, то есть, просто 0.
...
Рейтинг: 0 / 0
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
    #39715244
bormman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle
авторЭто что-то значит? значит адресовано __Michelle

авторТак какой запрос все-таки нужен?
я ж выше написал - все работает ( [21699852] написано до выполнения SQL) , но я все еще не доганяю этого момента:
AVG(ТЕМПЕРАТУРА*-(Дата Between #11/01/2000# And #03/01/2001#))
...
Рейтинг: 0 / 0
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
    #39715246
bormman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle
авторТо есть, получаем для каждой даты следующее:
либо ТЕМПЕРАТУРА*-(-1), то есть, просто ТЕМПЕРАТУРА,
либо ТЕМПЕРАТУРА*0, то есть, просто 0.
ага, вот оно что. Теперь ясно почему по осадкам работает ОК а по т-ре нет... при подсчете среднего 0 учитывается... надо как-то это обойти... может Nz?
...
Рейтинг: 0 / 0
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
    #39715249
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Считать среднее "вручную"?
Код: sql
1.
Sum(ТЕМПЕРАТУРА*-(Дата Between #11/01/2000# And #03/01/2001#))/-Sum(Дата Between #11/01/2000# And #03/01/2001#) AS A1
...
Рейтинг: 0 / 0
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
    #39715258
bormman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторSum(ТЕМПЕРАТУРА*-(Дата Between #11/01/2000# And #03/01/2001#))/-Sum(Дата Between #11/01/2000# And #03/01/2001#) AS A1
Может не /-Sum a /-Count /// но все равно резалт не верен... хм
...
Рейтинг: 0 / 0
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
    #39715261
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bormmanМожет не /-Sum a /-Count /// Нет.
...
Рейтинг: 0 / 0
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
    #39715263
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bormman,
как-то так (в запросе параметров дата в формате dd.mm.yyyy или dd.mm.yy)
...
Рейтинг: 0 / 0
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
    #39715264
bormman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,
dd.mm.yyyy
...
Рейтинг: 0 / 0
25 сообщений из 46, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Группировка данных по диапазону дат что входит в более широкий диапазон дат.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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