Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.11;
Скачать: CL | DM;

Вниз

SQL-запрос. Неужели придется прогу писать?   Найти похожие ветки 

 
Grrey   (2002-03-20 23:17) [0]

Задача:
Есть таблица с полями:
Date_Time Date,
Counter number
Нужно представить информацию по месяцам. Т.е.
Месяц - Число (Sum(Counter))
Пробовал так:
SELECT UDFSUB_STR(DATE_TIME,3,11), SUM(COUNTER) FROM TEMP_TAB GROUP BY DATE_TIME;
Там просто дата если начинаеться с чисел (день) < 10, то SUB_STR нужно использовать с другими параметрами. Неужели никак нельзя запросами ограничиться?
Может кто поможет?


 
kaif ©   (2002-03-20 23:49) [1]

Создай таблицу YEAR_DATES с полями:
THE_MONTH INTEGER
THE_DAY INTEGER
THE_YEAR INTEGER
THE_DATE DATE
Не забудь индексы тоже.
Заполни ее соответствующими значениями на 10 лет (это всего 3650 записей), объединяй со своей таблицей в запросе типа
SELECT THE_MONTH, THE_DAY, SUM(Counter)
FROM YEAR_DATES, MYTABLE
WHERE YEAR_DATES.DATE_TIME = MYTABLE.DATE_TIME
GROUP BY THE_MONTH, THE_DAY
Все это работает очень быстро.
В IB6.0 можно лучшее решение придумать (хранимую процедуру, генерящую такой набор).


 
Фэ ©   (2002-03-21 01:23) [2]

Кстати, если добавить поля ПОЛУГОДИЕ, КВАРТАЛ, НЕДЕЛЯ, РАБОЧИЙ ДЕНЬ, и т.п. намного жизнь облегчается по выборке за нужный интервал


 
grrey   (2002-03-21 11:11) [3]

Cпасибо!


 
Lusha ©   (2002-03-21 12:33) [4]

А что в Interbase нет функции преобразования даты в строку необходимого формата? Неужели обязательно нужно "левую" таблицу заводить :(


 
Fay ©   (2002-03-22 01:39) [5]

Напиши UDF и всё.


 
DiggerAbstract   (2002-03-22 04:29) [6]

SELECT
MONTH(DATE_TIME),
DAY(DATE_TIME),
SUM(COUNTER)
FROM
TEMP_TAB
GROUP BY 1, 2


 
grrey   (2002-03-22 08:42) [7]

To Fay> Легче процедурку написать. Я уже все сделал, в принципе, конечно не сам!
To DiggerAbstract> А функции Month, Day, Sum я как понял всеже писать придеться! И они будут очень медленно работать!
Но все равно спасибо!


 
Fay ©   (2002-03-22 12:44) [8]

А напиши их так, чтоб работали побыстрее!
Как мысля?



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

Текущий архив: 2002.04.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.01 c
1-32869
SeF
2002-03-23 00:49
2002.04.11
Путь к DLL


1-32802
Chistyakov
2002-04-01 10:13
2002.04.11
Как недопустить повторного запуска программы?


3-32622
Moscower
2002-03-22 13:02
2002.04.11
ПРОБЛЕМА С RESTORE на удаленный сервер


3-32643
IronHawk
2002-03-19 12:24
2002.04.11
Обнуляються данные в базе !


1-32741
snoup
2002-03-29 23:25
2002.04.11
А как создать свой лог-файл который бы вёл журнал(когда/восколько