powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Тип агрегации в запросе
9 сообщений из 9, страница 1 из 1
Тип агрегации в запросе
    #36993225
AVERAGE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

Извините, если не в тему - у меня вопрос по конструкции SQL-запроса. Задача в следующем:

В одной из таблиц мы имеем перечень sql функций группировки. Скажем

FUN
ID | FUN
1 Sum
2 Avg

Во второй - тип агрегации в зависимости от fun_id

DATA
ID | FUN_ID | DATA
1 2 280
2 1 360

Задача в том, чтобы в запросе изменять тип агрегации.

Скажем,

Select F.FUN(D.DATA) from FUN F, DATA D
where F.ID = D.FUN_ID

Можно ли реализовать такое средствами SQL, не прибегая к использованию функций. Речь идет о базах Oracle, то есть конструкции типа To_char(FUN) поддерживаются.

Очень не хотелось бы делать через функции :(

Заранее спасибо за конструктивные предложения
...
Рейтинг: 0 / 0
Тип агрегации в запросе
    #36993236
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AVERAGEРечь идет о базах OracleТогда вы ошиблись подфорумом.
...
Рейтинг: 0 / 0
Тип агрегации в запросе
    #36993485
AVERAGE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftAVERAGEРечь идет о базах OracleТогда вы ошиблись подфорумом.

Я понимаю, но речь идет о чистом SQL
...
Рейтинг: 0 / 0
Тип агрегации в запросе
    #36993499
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AVERAGEречь идет о чистом SQLВ этом случае - тоже ошиблись подфорумом. В MySQL (как и в остальных СУБД) не применяется "чистый" SQL.

Выбирайте, либо таки Оракл и я перенесу тему в оракловый подфорум, либо "чистый" SQL, тогда перенесу в Проектирование БД.
...
Рейтинг: 0 / 0
Тип агрегации в запросе
    #36994831
AVERAGE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftAVERAGEречь идет о чистом SQLВ этом случае - тоже ошиблись подфорумом. В MySQL (как и в остальных СУБД) не применяется "чистый" SQL.

Выбирайте, либо таки Оракл и я перенесу тему в оракловый подфорум, либо "чистый" SQL, тогда перенесу в Проектирование БД.

В проектирование БД тогда, наверное. Перенесите, пожалуйста, так как крайне необходимо получить хоть какую-то консультацию. Заранее спасибо.

Модератор: Тема перенесена из форума "MySQL".
...
Рейтинг: 0 / 0
Тип агрегации в запросе
    #36995093
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Постановка задачи странная, плохо себе представляю где это может понадобится, я бы в одном запросе просчитал ВСЕ агрегаты (благо это недорого)
перефразируя задачу как получить разные результаты (например из процедуры) в зависимости от входных параметров, то она решается либо статически
if
select * from a where d
else
select * from b where c

либо динамически через динамический sql

Первый способ быстрее, надежнее и безопаснее, второй мощнее.
...
Рейтинг: 0 / 0
Тип агрегации в запросе
    #37001110
AVERAGE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SERG1257Постановка задачи странная, плохо себе представляю где это может понадобится, я бы в одном запросе просчитал ВСЕ агрегаты (благо это недорого)
перефразируя задачу как получить разные результаты (например из процедуры) в зависимости от входных параметров, то она решается либо статически
if
select * from a where d
else
select * from b where c

либо динамически через динамический sql

Первый способ быстрее, надежнее и безопаснее, второй мощнее.

Это необходимо для вывода значений показателей с разными типами агрегации. Скажем для общей выработки - сумма в тоннах, а для лабораторных показателей - среднее значение, скажем, концентрации веществ.

Вы не могли бы привести пример динамического запроса с подстановкой текстовой константы (AVG, SUM) в зависимости от типа агрегации как в примере?
...
Рейтинг: 0 / 0
Тип агрегации в запросе
    #37001178
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AVERAGEЭто необходимо для вывода значений показателей с разными типами агрегации. Скажем для общей выработки - сумма в тоннах, а для лабораторных показателей - среднее значение, скажем, концентрации веществ.

Вы не могли бы привести пример динамического запроса с подстановкой текстовой константы (AVG, SUM) в зависимости от типа агрегации как в примере?Это не делается в "чистом" SQL. Динамические запросы сильно отличаются в разных СУБД. Я бы с ними в данном случае вообще не связывался, а вызывал соответствующие функции для соответствующих показателей. Попробуйте еще раз сформулировать задачу, может быть расширив ее. Выбранное Вами решение не реализуется в СУБД просто и изящно, лучше поискать другое.

Если будете настаивать, покажем как решать неизящно и непросто. Только потом не сетуйте, что система работает глючно и медленно.
...
Рейтинг: 0 / 0
Тип агрегации в запросе
    #37002198
Фотография lLocust
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AVERAGE,

А не проще ли сделать выборку по всем нужным агрегациям?

а в определенном клиенте отображать только нужные столбцы?

Скажем запрос
select AVG(D.DATA) AVG_DATA,
SUM(D.DATA) SUM_DATA
FROM DATA D

Для общей выработки - SUM_DATA
Для лабораторных показателей - AVG_DATA
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Тип агрегации в запросе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]