|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
Вот столкнулся с такой задачей. Имеем таблицу 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... и т.д. Проблема именно с вытаскиванием данных по таким вот множественным диапазонам. Возможно ли сформировать запрос с такой сложной выборкой по датам. Буду благодарен за помощь. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2018, 21:02 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
Да еще забыл сказать, общий период может меняться, а неизменен только малый период (ноябрь-март).... вот потому и проблема, если бы общий период был статичен, то можно просто перечислить все через Between * And * Or Between * And * ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2018, 21:33 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2018, 21:50 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
В Sum добавить правую закрывающую скобку. Пишу с планшета, может, еще что пропущено... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2018, 21:52 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3.
Не? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2018, 21:59 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
__Michelle, спасибо, но во 2 сообщ. я написал, что общий период (2000-2018) будет меняться, неизменно только ноябрь-март и что делает эта конструкция?? Код: sql 1.
... это что, из поля ТЕМПЕРАТУРА вычитается дата? Так на всякий случай уточню: В поле ТЕМПЕРАТУРА содерж. данные типа Single В поле ОСАДКИ содерж. данные типа Long В поле ДАТА содерж. данные типа Date ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2018, 22:06 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
Predeclared, спасибо что имеется в виду под Код: sql 1.
Имею такую таблицу: имя МЕТЕО IDТЕМПЕРАТУРАОСАДКИ ДАТА ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2018, 22:13 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
bormman... что имеется в виду ... Таблица, описывающая диапазоны, отличные от стандартных (неделя, месяц, квартал, год). ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2018, 22:22 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
bormman __Michelle, спасибо, но во 2 сообщ. я написал, что общий период (2000-2018) будет меняться, неизменно только ноябрь-март От меня это не вскользнуло. Именно это и учтено. Вам нужно только продолжить текст запроса по аналогии с приведенной строкой, меняя значения границ периодов. bormmanи что делает эта конструкция?? Код: sql 1.
... это что, из поля ТЕМПЕРАТУРА вычитается дата? Нет, конечно. Попробуйте выполнить запрос. А потом объясню, если потребуется. Сейчас писать неудобно. bormmanТак на всякий случай уточню: В поле ТЕМПЕРАТУРА содерж. данные типа Single В поле ОСАДКИ содерж. данные типа Long В поле ДАТА содерж. данные типа Date Спасибо. Запрос с этим справится. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2018, 22:28 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
@ __Michelle вот так ? Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2018, 22:48 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
bormman@ __Michelle вот так ? Код: sql 1. 2. 3. 4.
В принципе, так. Но скобки нужно добавить, как сказано в 21699786 . Красным помечено. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2018, 22:57 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
bormman, Попробуйте сначала на двух-трех диапазонах, чтобы скорость выполнения посмотреть. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2018, 23:04 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
@ __Michelle , спасибо что помогаете, однако.... может конечно я туплю, но как мне поможет такая конструкция если в ней так явно перечисляются диапазоны ? а если нужен будет диапазон с 2003 по 2005 то что тогда переписывать запрос под него? Да и если так явно перечислять то можно просто через Between. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2018, 23:05 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
или каким-то образом будет отрабатывать только тот диапазон что я задам? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2018, 23:08 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
@ __Michelle афигеть, таки да оно считает, правда выдает резалт в одну строку но считает.... какой интересный финт :) поясните мне этот момент плиз AVG( ТЕМПЕРАТУРА*-(Дата Between #11/01/2000# And #03/01/2001#) ) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2018, 23:22 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
bormman, Так какой запрос все-таки нужен? Вы же писали, что вроде один запрос должен возвращать 18 средних и 18 сумм за 18 периодов: ноябрь2000-март2001, ноябрь2001-март2002, ...., ноябрь2017-март2018. Или это не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2018, 23:26 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
bormman, А зачем Вы мне @ прицепляете? Это что-то значит? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2018, 23:28 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
Код: sql 1.
ТЕМПЕРАТУРА умножается на результат логической операции сравнения (Дата Between #11/01/2000# And #03/01/2001#). Если Дата в нужном диапазоне - результат равен -1 (минус единице). Если нет - результат равен 0 (нулю). То есть, получаем для каждой даты следующее: либо ТЕМПЕРАТУРА*-(-1), то есть, просто ТЕМПЕРАТУРА, либо ТЕМПЕРАТУРА*0, то есть, просто 0. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2018, 23:38 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
__Michelle авторЭто что-то значит? значит адресовано __Michelle авторТак какой запрос все-таки нужен? я ж выше написал - все работает ( [21699852] написано до выполнения SQL) , но я все еще не доганяю этого момента: AVG(ТЕМПЕРАТУРА*-(Дата Between #11/01/2000# And #03/01/2001#)) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2018, 23:39 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
__Michelle авторТо есть, получаем для каждой даты следующее: либо ТЕМПЕРАТУРА*-(-1), то есть, просто ТЕМПЕРАТУРА, либо ТЕМПЕРАТУРА*0, то есть, просто 0. ага, вот оно что. Теперь ясно почему по осадкам работает ОК а по т-ре нет... при подсчете среднего 0 учитывается... надо как-то это обойти... может Nz? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2018, 23:44 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
Считать среднее "вручную"? Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2018, 23:52 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
авторSum(ТЕМПЕРАТУРА*-(Дата Between #11/01/2000# And #03/01/2001#))/-Sum(Дата Between #11/01/2000# And #03/01/2001#) AS A1 Может не /-Sum a /-Count /// но все равно резалт не верен... хм ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2018, 00:07 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
bormmanМожет не /-Sum a /-Count /// Нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2018, 00:15 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
bormman, как-то так (в запросе параметров дата в формате dd.mm.yyyy или dd.mm.yy) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2018, 00:16 |
|
|
start [/forum/topic.php?fid=45&fpage=42&tid=1611112]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
215ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 292ms |
total: | 618ms |
0 / 0 |