|
|
|
Тип агрегации в запросе
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Извините, если не в тему - у меня вопрос по конструкции 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) поддерживаются. Очень не хотелось бы делать через функции :( Заранее спасибо за конструктивные предложения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2010, 13:07 |
|
||
|
Тип агрегации в запросе
|
|||
|---|---|---|---|
|
#18+
AVERAGEРечь идет о базах OracleТогда вы ошиблись подфорумом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2010, 13:10 |
|
||
|
Тип агрегации в запросе
|
|||
|---|---|---|---|
|
#18+
miksoftAVERAGEРечь идет о базах OracleТогда вы ошиблись подфорумом. Я понимаю, но речь идет о чистом SQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2010, 14:23 |
|
||
|
Тип агрегации в запросе
|
|||
|---|---|---|---|
|
#18+
AVERAGEречь идет о чистом SQLВ этом случае - тоже ошиблись подфорумом. В MySQL (как и в остальных СУБД) не применяется "чистый" SQL. Выбирайте, либо таки Оракл и я перенесу тему в оракловый подфорум, либо "чистый" SQL, тогда перенесу в Проектирование БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2010, 14:26 |
|
||
|
Тип агрегации в запросе
|
|||
|---|---|---|---|
|
#18+
miksoftAVERAGEречь идет о чистом SQLВ этом случае - тоже ошиблись подфорумом. В MySQL (как и в остальных СУБД) не применяется "чистый" SQL. Выбирайте, либо таки Оракл и я перенесу тему в оракловый подфорум, либо "чистый" SQL, тогда перенесу в Проектирование БД. В проектирование БД тогда, наверное. Перенесите, пожалуйста, так как крайне необходимо получить хоть какую-то консультацию. Заранее спасибо. Модератор: Тема перенесена из форума "MySQL". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2010, 05:44 |
|
||
|
Тип агрегации в запросе
|
|||
|---|---|---|---|
|
#18+
Постановка задачи странная, плохо себе представляю где это может понадобится, я бы в одном запросе просчитал ВСЕ агрегаты (благо это недорого) перефразируя задачу как получить разные результаты (например из процедуры) в зависимости от входных параметров, то она решается либо статически if select * from a where d else select * from b where c либо динамически через динамический sql Первый способ быстрее, надежнее и безопаснее, второй мощнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2010, 15:32 |
|
||
|
Тип агрегации в запросе
|
|||
|---|---|---|---|
|
#18+
SERG1257Постановка задачи странная, плохо себе представляю где это может понадобится, я бы в одном запросе просчитал ВСЕ агрегаты (благо это недорого) перефразируя задачу как получить разные результаты (например из процедуры) в зависимости от входных параметров, то она решается либо статически if select * from a where d else select * from b where c либо динамически через динамический sql Первый способ быстрее, надежнее и безопаснее, второй мощнее. Это необходимо для вывода значений показателей с разными типами агрегации. Скажем для общей выработки - сумма в тоннах, а для лабораторных показателей - среднее значение, скажем, концентрации веществ. Вы не могли бы привести пример динамического запроса с подстановкой текстовой константы (AVG, SUM) в зависимости от типа агрегации как в примере? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2010, 08:59 |
|
||
|
Тип агрегации в запросе
|
|||
|---|---|---|---|
|
#18+
AVERAGEЭто необходимо для вывода значений показателей с разными типами агрегации. Скажем для общей выработки - сумма в тоннах, а для лабораторных показателей - среднее значение, скажем, концентрации веществ. Вы не могли бы привести пример динамического запроса с подстановкой текстовой константы (AVG, SUM) в зависимости от типа агрегации как в примере?Это не делается в "чистом" SQL. Динамические запросы сильно отличаются в разных СУБД. Я бы с ними в данном случае вообще не связывался, а вызывал соответствующие функции для соответствующих показателей. Попробуйте еще раз сформулировать задачу, может быть расширив ее. Выбранное Вами решение не реализуется в СУБД просто и изящно, лучше поискать другое. Если будете настаивать, покажем как решать неизящно и непросто. Только потом не сетуйте, что система работает глючно и медленно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2010, 09:42 |
|
||
|
Тип агрегации в запросе
|
|||
|---|---|---|---|
|
#18+
AVERAGE, А не проще ли сделать выборку по всем нужным агрегациям? а в определенном клиенте отображать только нужные столбцы? Скажем запрос select AVG(D.DATA) AVG_DATA, SUM(D.DATA) SUM_DATA FROM DATA D Для общей выработки - SUM_DATA Для лабораторных показателей - AVG_DATA ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2010, 14:59 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=37001178&tid=1542415]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
173ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 492ms |

| 0 / 0 |
