|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#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 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
sdku, dd.mm.yyyy ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2018, 00:20 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
вдогонку: если введете поле год:year(myData) все будет по годам (соответственно "допилите" поле [период]) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2018, 00:33 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
__Michelle спасибо все получилось... громоздко правда, но все лучше чем я думал делать. sdku спасибо, но в вашем варианте данные обрабатываются по только по общему диапазону а надо см. пост 1 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2018, 00:37 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
авторвдогонку: если введете поле год:year(myData) все будет по годам (соответственно "допилите" поле [период]) спасибо, завтра попробую допилить.... поздно уже... рано вставать надо всем спасибо за помощь. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2018, 00:41 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
Код: vbnet 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2018, 01:00 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
Вот такой вариант Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2018, 02:00 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
sdku mds_world Многообещающий вариант, но мне не удается его запустить, т.к. не пойму это кусок: Код: sql 1.
.... что есть Год ? это что поле алиас из этого: Код: sql 1.
в общем запустить не удается. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2018, 17:36 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
bormman mds_world Многообещающий вариант, но мне не удается его запустить Не удается это как? Ошибки? Какие? Что пишется? Если не удается побороть самому выкладывайте фрагмент БД. Только самое необходимое с небольшим количеством данных. Но так, чтобы появлялась ошибка. bormmanчто есть Год ? это что поле алиас из этого:Расчетное поле Год есть год начала периода. Можно конечно писать интервал, но мне показалось это нелогичным так как начало и конец интервала входят дважды. Хотя впрочем, основания такие же как и у года начала. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2018, 18:14 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2018, 21:34 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
Не? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2018, 22:06 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
Predeclared Абсолютно верно ! супер ! ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2018, 22:41 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
bormman, Ну так какого лешего вы второй день занимаетесь рукоблудством хардкодом? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2018, 22:56 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
Predeclared ну почему занимаюсь... потому и занимаюсь, что знаком с аксом шапошно т.к. работаю в ексель а надо вытащить данные с акса, вот и ищу более изящные методы, чем выпиливание нужного из набора recordset ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2018, 23:12 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
Predeclared, спасибо за помощь ну почему занимаюсь... потому и занимаюсь, что знаком с аксом шапошно т.к. работаю в ексель а надо вытащить данные с акса, вот и ищу более изящные методы, чем выпиливание нужного из набора recordset ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2018, 23:13 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
Predeclared В этом месте FROM METEO INNER JOIN Диапазоны ON METEO.DATA Between Диапазоны.ДатаНачала AND Диапазоны.ДатаОкончания Ругается на отсутствие And после Between По каким полям и какой связью вы соединили табл. METEO и Диапазоны ? или там вообще все по-другому реализовано. Проще уже готовый файл скинуть. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2018, 23:54 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2018, 23:55 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
Predeclared, Выполняет, но даже в конструктор зайти не могу.. странно может версии акса разные... вот же зараза ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 00:04 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
Исправлено Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 00:15 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
mds_world , Спасибо, наконец то заработало как надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 00:31 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
bormman... Выполняет, но даже в конструктор зайти не могу.. Ничего удивительного. Такого рода объединения доступны только в "Режиме SQL" конструктора запросов. Это бага, переросшая в фичу давным давно. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 12:01 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
если еще актуально гляньте это: годится для разных интервалов любой длительности-все задается пользователем(форма:начало, конец (год),начало(месяц),длительность(месяцев) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 03:48 |
|
Группировка данных по диапазону дат что входит в более широкий диапазон дат.
|
|||
---|---|---|---|
#18+
sdku спасибо, VBA то же очень хороший вариант, я сам некоторое время пользовался подобным, но самый лучший вариант - это получить максимально готовое решение с помощью SQL запроса за раз.... собственно за тем тему и создал. Предложенные методы mds_world и Predeclared - самое то. Еще раз всем спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 20:38 |
|
|
start [/forum/topic.php?all=1&fid=45&tid=1611112]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
142ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
70ms |
get tp. blocked users: |
1ms |
others: | 278ms |
total: | 534ms |
0 / 0 |