Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / хитрый GROUP BY, да и SORT BY и прочие... / 8 сообщений из 8, страница 1 из 1
23.05.2003, 10:26:02
    #32166832
~RVS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрый GROUP BY, да и SORT BY и прочие...
допустим, есть запрос:
Код: plaintext
1.
2.
3.
4.
SELECT f1 as alias1, f2 as alias2, f3+f4 as alias3, MyFunc(f5) as alias4, sum(f6) as alias5 
FROM MyTable 
SORT BY f1, MyFunc(f5) 
GROUP BY f1, f2, f3+f4, MyFunc(f5), sum(f6)


вид этого запроса (его содержимое в GROUP BY и SORT BY) родилось в силу того, что не получается сделать что-нибудь вроде

Код: plaintext
1.
2.
3.
4.
SELECT f1 as alias1, f2 as alias2, f3+f4 as alias3, MyFunc(f5) as alias4, sum(f6) as alias5 
FROM MyTable 
SORT BY alias1, alias4
GROUP BY alias1, alias2, alias3, alias4, alias5


, что по времени выполнения будет несколько быстрее, если учесть, что MyFunc() работает тормозно.

синтаксис описанный выше легко применялся в MSSQL-е.

что подобное есть (ли?) в оракле.
...
Рейтинг: 0 / 0
23.05.2003, 10:33:44
    #32166844
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрый GROUP BY, да и SORT BY и прочие...
SORT BY - нет такой фразы SQL
...
Рейтинг: 0 / 0
23.05.2003, 11:00:58
    #32166896
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрый GROUP BY, да и SORT BY и прочие...
А не будет ли безразлично, по чему группировать, по MyFunc(f5) или просто f5?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
select alias1
     , alias2
     , alias3
     , MyFunc(f5) alias4
     , alias5
from (select f1 alias1
           , f2 alias2
           , f3 + f4 alias3   
           , f5
           , sum(f6) sum_f6 alias5
      from MyTable 
      group by f1
             , f2
             , f3 + f4 
             , f5
     )
order by alias1
      , alias4      
...
Рейтинг: 0 / 0
23.05.2003, 11:17:03
    #32166930
~RVS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрый GROUP BY, да и SORT BY и прочие...
ну про ORDER<->SORT я перепутал - бывает. 8-) а вот более другого способа нет, кроме как во from его запихивать вместо таблицы?

не красиво это.... бывает если что сложнее, то не удобно, весьма...
...
Рейтинг: 0 / 0
23.05.2003, 11:22:50
    #32166945
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрый GROUP BY, да и SORT BY и прочие...
"не красиво это.... "

Красиво, не красиво - это уже вторично, главное план.
...
Рейтинг: 0 / 0
23.05.2003, 12:51:01
    #32167093
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрый GROUP BY, да и SORT BY и прочие...
Хотя я не совсем прав: если для 2-х различных аргументов функция вернет один и тот же результат (например, округление дат, чисел), то такой вариант мало что даст. Но использование псевдонима поля в выражениии GROUP BY вроде как не предусмотрено.
...
Рейтинг: 0 / 0
23.05.2003, 13:30:44
    #32167161
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрый GROUP BY, да и SORT BY и прочие...
Код: plaintext
1.
2.
3.
4.
SELECT f1 as alias1, f2 as alias2, f3+f4 as alias3, MyFunc(f5) as alias4, sum(f6) as alias5 
FROM MyTable 
SORT BY alias1, alias4
GROUP BY alias1, alias2, alias3, alias4, alias5


Как я думаю у тебя ошибка в запросе в том, что ты пытаешься использовать двойное группирование -
Код: plaintext
...sum(f6) as alias5...GROUP BY alias1, alias2, alias3, alias4, alias5....
...
Рейтинг: 0 / 0
23.05.2003, 15:26:57
    #32167364
DimaR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрый GROUP BY, да и SORT BY и прочие...
И еще, сортировка перед группировкой не имеет смысла,
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / хитрый GROUP BY, да и SORT BY и прочие... / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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