Гость
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / альтернатива GROUP BY / 6 сообщений из 6, страница 1 из 1
30.05.2005, 14:16
    #33090722
adolf
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
альтернатива GROUP BY
К примеру, есть таблица MYSCHEMA.TAB1:

AT1 AT2 AT3
________________
1 A MINSK
2 A GRODNO
3 A VITEBSK
4 Z MOGILEV
5 Z MINSK
6 F GOMEL
7 F PINSK
8 F BREST
9 F MINSK

AT1 - первичный ключ

Требуется получить такую выборку :
AT1 AT2 AT3
________________
3 A VITEBSK
5 Z MINSK
9 F MINSK

тоесть для каждого различного значения AT2 выбрать кортеж, где AT1 максимально

пробуем

SELECT MAX(AT1), AT2, AT3 FROM MYSCHEMA.TAB1
GROUP BY AT2

- неверный запрос, поскольку, цитата

"Every field in the SELECT list must either be specified in the GROUP BY, or must havea column function applied against it. (Graeme Birchall, DB2 UDB V7.2
SQL Cookbook)"

то бишь AT3 не в дугу.

Но мне требуется аттрибут AT3. Вариант с объединением подзапросов не очень нравится, поскольку реальнае таблица много толще по объему (до млн. записей).

Кто что посоветует?

Спасибо.
...
Рейтинг: 0 / 0
30.05.2005, 14:56
    #33090819
riman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
альтернатива GROUP BY
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
select *
from myschema.tab1 t1
where exists 
    (select max(t2.at1) as at1
        , t2.at2
    from myschema.tab1 t2
    where t2.at2=t1.at2
    group by t2.at2
    having max(t2.at1)=t1.at1

Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
30.05.2005, 14:57
    #33090820
riman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
альтернатива GROUP BY
не то скопировал. Вот так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
select *
from test t1
where exists
(select t2.at2
 ,max(t2.at1)
from test t2
group by t2.at2
having max(t2.at1)=t1.at1)

Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
30.05.2005, 15:00
    #33090825
riman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
альтернатива GROUP BY
не заметил, что без подзапросов надо. По-моему никак.

Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
30.05.2005, 15:12
    #33090856
adolf
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
альтернатива GROUP BY
riman, браво, спасибо!!
вариант проходит, это EXISTS с коррелированным подзапросом, что гораздо дешевле лобовых джойнов
...
Рейтинг: 0 / 0
30.05.2005, 15:15
    #33090866
adolf
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
альтернатива GROUP BY
riman, браво, спасибо!!
вариант проходит, это EXISTS с коррелированным подзапросом, что гораздо дешевле лобовых джойнов
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / альтернатива GROUP BY / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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