Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > СУБД, общие вопросы > Интегрирование данных с помощью запроса


Автор: Ivan. 1.7.2006, 10:42
Имеется таблица с полями:
[DT] datetime,
[Num] smallint
Необходимо проинтегрировать поле [Num] например по 10 минут (время хранится в поле [DT]) в виде нахождения среднего числя в каждой группе из 10 минут. При этом получить новое поле [DT] округленное до 10 минут.
А точнее имеется список таблиц с именями например:
[01_01_2006],
[02_01_2006],
[03_01_2006],
...
каторые необходимо объединить с помощью UNION и выполнить вышеперечисленное интегрирование
зарание благадарен 

Автор: chief39 1.7.2006, 16:08
Попробуй что-то вроде такого...

Код

select  roundXXX(dt), avg(num)
from table1
group by roundXXX(dt)


roundXXX - подразумевается округление даты. Этот механизм вот так сразу точно не скажу - уточни СУБД. Получаешь, к примеру, минуты, делишь на 10  и округляешь.
То есть, береёшь СУБД-зависимую функцию преобразования даты и вытягиваешь количество минут вместо тиков.
Или вычисляешь количество тиков в 10 минутах, берёшь дату в тиках, делишь делишь на вычисленное, округляешь. Получится приблизительно.
И добавляешь в выборке поле опять же той даты с AVG().




 

Автор: Ivan. 1.7.2006, 18:31
Сформировал такой запрос:
Код

SELECT
    CONVERT(smalldatetime, ROUND(CONVERT(float, DT) * 144, 0) / 144) AS DT,
    AVG(Num) AS Num
FROM tab
GROUP BY CONVERT(smalldatetime, ROUND(CONVERT(float, DT) * 144, 0) / 144)
ORDER BY DT

в Microsoft SQL Server все работает прекрасно, когда начал переносить в BDE выяснилось, что CONDERT и ROUND непонимает.
Я пишу в Borland C++ Builder в BDE (Paradox.4).
Перейти на другое СУБД немогу - привязка к Paradox.
Что делать? smile    

Автор: chief39 3.7.2006, 11:51
Цитата(Ivan. @  1.7.2006,  18:31 Найти цитируемый пост)
в Microsoft SQL Server все работает прекрасно, когда начал переносить в BDE выяснилось, что CONDERT и ROUND непонимает.


Я ж говорил: 
Цитата(chief39 @  1.7.2006,  16:08 Найти цитируемый пост)
Этот механизм вот так сразу точно не скажу - уточни СУБД. 


Се ля ви smile Создатели СУБД лепят каждый своё и соревнуются в орикинальности...
Даже если различие только в названии функции - они не преминут это отличие воплотить.

Тут уж никак. Или пиши по необходимости под нужную СУБД или сделай свой генератор запросов(или их частей), который будет с различными реализациями СУБД.
То есть основное - одинаково, специфика - варьируется от выбранного типа СУБД.
В текущем проекте на ДЖАВЕ запросы вручную не строим - сделали а-ля конструктор их. С реализацией под Оракл и майскл. При запуске в продакшн допишутся модули под остальные СУБД.

 

Автор: Ivan. 3.7.2006, 16:44
В таком случаи несколько вопросов:
- Как другим способом произвести преобразование типов (кроме способа CONVERT), например из datetime во float?
- Как установить драйвер Microsoft SQL Server не напрягая тем самым клиента (в фоновом режиме не спрашивая куда, зачем, НАДО и всё, без всяких утелит и иконок в трее)? 

Автор: LSD 3.7.2006, 23:42
Цитата(Ivan. @  3.7.2006,  17:44 Найти цитируемый пост)
- Как другим способом произвести преобразование типов (кроме способа CONVERT), например из datetime во float?

Тебе нужна функция конвертирования даты, и она в любом случае будет записеть от типа СУБД. Тут нет универсальных решений.

Цитата(Ivan. @  3.7.2006,  17:44 Найти цитируемый пост)
- Как установить драйвер Microsoft SQL Server не напрягая тем самым клиента (в фоновом режиме не спрашивая куда, зачем, НАДО и всё, без всяких утелит и иконок в трее)?

А зачем тебе драйвер SQL Server если ты работаешь с Paradox. 

Автор: chief39 4.7.2006, 09:22
Цитата(LSD @  3.7.2006,  23:42 Найти цитируемый пост)
А зачем тебе драйвер SQL Server если ты работаешь с Paradox.  

Наверное, парадокс надоел smile))

Цитата(Ivan. @  3.7.2006,  16:44 Найти цитируемый пост)
- Как установить драйвер Microsoft SQL Server не напрягая тем самым клиента (в фоновом режиме не спрашивая куда, зачем, НАДО и всё, без всяких утелит и иконок в трее)?  

Не уверен, но, может быть, откопаешь где-то описание необходимых файлов и путей нужных либ и конфигов, чтоб самому сделать "тихий" инсталлятор.
Или, как вариант, откопать "самоставные" дрова МСа и запускать сетап из своего инсталлятора. Хотя, не знаю насколько пугающ интерфейс МСдровяного инсталлятора для рядового юзера в плане пугающих непонятных вопросов и надписей. Не ставил никогда.

 

Автор: Ivan. 4.7.2006, 10:34
Цитата

Цитата(LSD @  3.7.2006,  23:42 ) 
А зачем тебе драйвер SQL Server если ты работаешь с Paradox.   
Наверное, парадокс надоел ))

В точку!
Я пользуюсь парадоксом только по тому, что драйвер устанавливается не спрашивая клиента надо ему это или нет и весит пару метров, простой в подключении, ...
Но у него мало возможностей и я подозреваю, что и работает он гараздо медленней.
Кстате, ком надо, вот ссылка на драйвер BDE http://www.kirov.ru/~saraev/download/bdesetup.exe
Я думал, что и на MS SQL есть чтото подобное 

Автор: LSD 4.7.2006, 22:56
Посмотри http://msdn.microsoft.com/sql/express/default.aspx?pull=/library/en-us/dnsse/html/emsqlexcustapp.asp и http://msdn.microsoft.com/library/default.asp?url=/library/en-us/instsql/in_runsetup_6nz9.asp. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)