Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.12.16;
Скачать: [xml.tar.bz2];

Вниз

Дискретное значение сумм по месяцам.   Найти похожие ветки 

 
-=Sergeante=-   (2002-11-22 17:49) [0]

Великикие Программеры, есть вопрос по SQL. Скажем, есть некая таблица (ID, ДАТА ОПЕРАЦИИ, СТОИМОСТЬ). Чтобы просумировать в определённом промежутке я делаю BEETWEEN дата начала and дата конца:)
Но вот незадача (не для Вас естесственно), как получить эн-ное кол-во записей, чтобы каждая была суммой за ОДИН месяц.
Т.е. я полагаю, что надо выполнять несколько запросов, и в каждам приращение на 1 месяц:
between "01.01.2001" and "01.02.2001"
between "01.02.2001" and "01.03.2001"
between "01.03.2001" and "01.04.2001"
и т.д.

Можно ли как нить это загнать в ХП, чтоб она мне всё красиво сделала?

Собственно, всё это нужно для анализа динамики продаж и построения графиков для наглядности.
Спасибо.


 
3JIA9I CyKA   (2002-11-22 18:31) [1]

да


 
-=Sergeante=-   (2002-11-22 18:44) [2]

Нет других вариантов, кроме как перебором в цикле? Может можно группировкой как-нибудь?


 
MOA   (2002-11-22 20:22) [3]

Попробуйте завести таблицу с границами месяцев, затем JOIN с этой таблицей. Конечно, не стоит забывать о високосных годах.
Удачи!


 
Johnmen   (2002-11-23 01:17) [4]

См. в сторону UNION и функции extract


 
Alexandr   (2002-11-23 08:07) [5]

но если хочется быстро и не жалко несколько лишних байтов в базе данных, то создай поля в таблице число, месяц, год...
Заполняй их триггерами, а потом при селекте группировку по ним делай.
Летать будет.


 
-=Sergeante=-   (2002-11-23 14:57) [6]


> Alexandr © (23.11.02 08:07)
> но если хочется быстро и не жалко несколько лишних байтов
> в базе данных, то создай поля в таблице число, месяц, год...
> Заполняй их триггерами, а потом при селекте группировку
> по ним делай.
> Летать будет.


Это идея. А если сделать CALCULATED-поле на стороне сервера? Производительность упадёт сильно?


 
sniknik   (2002-11-23 15:20) [7]

Почему нельзя сделать групировку по месяцам?
типа
SELECT SUM(Quantity),SUM(Sum),Min(CustomerID) FROM Invoices GROUP BY Month(OrderDate)
ну конечно и год надо включать.

и кстати если делать по
between "01.01.2001" and "01.02.2001"
between "01.02.2001" and "01.03.2001"
between "01.03.2001" and "01.04.2001" и т.д.
будет ошибка, between берет значения включительно. т.е. надо
between "01.01.2001" and "31.01.2001"
и т.д.

извиняюсь что влез (с IB не дружу :-), пример для MSSQL.
в IB так нельзя?


 
BlackTiger   (2002-11-23 15:31) [8]

Я тут выкладывал как-то текст ХП для MSSQL (crosstab, pivot).
Может его можно адаптировать для IB.

Может в IB есть свои средства (SQL-команды) для "перевертышей", как у MSAccess?


 
Alexandr   (2002-11-26 08:09) [9]

1) Calculated поле даст тормоза на селекте каждый раз, триггерное поле - на изменении один раз и с ним гемора больше. Смотри, что для тебя важнее.
2) Группировка по функциям еть далеко не но всех версиях (и в IB клонах только в Yaffil, по-моему), и уж индексы тут пролетают точно.



 
-=Sergeante=-   (2002-11-26 09:28) [10]


> Alexandr © (26.11.02 08:09)
> 1) Calculated поле даст тормоза на селекте каждый раз, триггерное
> поле - на изменении один раз и с ним гемора больше. Смотри,
> что для тебя важнее.


Думаю, сделаю как ты посоветовал, создам пару лишних полей и буду заполнять их триггером. Даже одно поле MMYYYY. И думаю с триггером гемора никакого не будет. Один раз написал, а остальное он сам всё сделает.

Спасибо всем за советы.


 
Карелин Артем   (2002-11-26 09:35) [11]

Копай в сторону Extract(year,month и так далее.) это позволяет работать с датой внутри ХП.
А еще на сайте Ibase.ru есть материалы по работе с датой через UDF и хранимые процедуры для различных действий с датой.


 
sniknik   (2002-11-26 10:54) [12]

-=Sergeante=- © (26.11.02 09:28)
>создам .. Даже одно поле MMYYYY
тогда уж YYYYMM, сортировка будет "правильной".


 
-=Sergeante=-   (2002-11-27 09:24) [13]


> Карелин Артем © (26.11.02 09:35)
> Копай в сторону Extract(year,month и так далее.)


Уже. Спасибо.


> sniknik © (26.11.02 10:54)
> тогда уж YYYYMM, сортировка будет "правильной".


Уже догнал :)


 
-=Sergeante=-   (2002-11-27 14:30) [14]

Сдалал. Работает великолепно. Всем спасибо.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.12.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.008 c
1-51724
Valentain
2002-12-05 18:26
2002.12.16
Динамический файл


4-52002
Kilin
2002-10-23 14:19
2002.12.16
Ошибка ShellExecute


3-51639
Jurden
2002-11-28 15:51
2002.12.16
Пробелы в стринговом поле


6-51867
guest_xxx
2002-10-21 12:40
2002.12.16
Disk quotas NT 4


6-51880
kostik78ua
2002-10-18 10:38
2002.12.16
TNMMsg+TNMMsgServ





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский