powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / А так можно? :)
4 сообщений из 4, страница 1 из 1
А так можно? :)
    #34114220
Dmitry Y.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый.

Допустим есть таблица :

A B C
21 Вася пупкин 21/01/06
7 Вася пупкин 23/01/06
10 Петя Звездочкин 20/01/06



Сделать из нее выборку так, чтобы
возвращала значение максимума из А и соответствующее значение
этому максимуму из С

типа

select max(T1.A),T1.B,(select T2.C from table t2 where T1.B=T2.B and T2.A=max(T1.A)) from table T1 group by T1.B


только без subselect

Результат:

21 Вася пупкин 21/01/06
10 Петя Звездочкин 20/01/06


В идеале чтобы это работало как deffered MQT.
...
Рейтинг: 0 / 0
А так можно? :)
    #34114247
whim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот так можно:

SELECT T1.a, T1.b, T1.c
FROM table1 T1
,(SELECT MAX(a) AS a
FROM table1
group by b) AS t2
WHERE t1.a = t2.a
...
Рейтинг: 0 / 0
А так можно? :)
    #34114293
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант: использовать аналитическую функцию row_number() over(partition by B order by A desc) + подзапрос:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
-- Ваши тестовые данные
with 
  test_table (A, B, C) as
    (
       values
         (
           ( 21 , 'Вася пупкин', '21/01/06'),
           (  7 , 'Вася пупкин', '23/01/06'),
           ( 10 , 'Петя Звездочкин', '20/01/06')
         )
    )
--
-- Запрос, решающий поставленную задачу:
select A, B, C
  from (
          select t1.*,
                 row_number() over(partition by B order by A desc) as rn
            from test_table t1
       ) v1
 where rn =  1 

Query finished, retrieving results...

 A          B              C
---   ---------------   --------
  21    Вася пупкин        21 / 01 / 06 
  10    Петя Звездочкин    20 / 01 / 06 

 2  row(s) retrieved
...
Рейтинг: 0 / 0
А так можно? :)
    #34114297
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Y.Сделать из нее выборку так, чтобы
возвращала значение максимума из А и соответствующее значение
этому максимуму из С

типа

select max(T1.A),T1.B,(select T2.C from table t2 where T1.B=T2.B and T2.A=max(T1.A)) from table T1 group by T1.B


только без subselectОй, "слона то я и не заметил..."(с)
Можно и без подзапроса. Примерно вот так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
-- Ваши тестовые данные
with 
  test_table (A, B, C) as
    (
       values
         (
           ( 21 , 'Вася пупкин', '21/01/06'),
           (  7 , 'Вася пупкин', '23/01/06'),
           ( 10 , 'Петя Звездочкин', '20/01/06')
         )
    )
--
-- Запрос, решающий поставленную задачу:
select t1.a, t1.b, t1.c
  from test_table t1
  join test_table t2
    on t1.b = t2.b
   and t1.a <= t2.a
 group by t1.a, t1.b, t1.c
having count( 1 ) =  1 
 order by t1.b

Query finished, retrieving results...

 A          B              C
---   ---------------   --------
  21    Вася пупкин        21 / 01 / 06 
  10    Петя Звездочкин    20 / 01 / 06 

 2  row(s) retrieved
Вот только нагрузку на сервер такой запрос может дать очень нехилую.

Кстати, есть ещё немного хитровыгнутый вариант. Там вообще один проход по таблице + группировка.
Могу его показать, вот только не знаю нужных для его работы функций по работе со строками и числами... :(
В частности нужны функции по конвертированию числа/строки в строку/число, по дополнению строки слева/справа заданным символом до заданной длины, выделение из строки подстроки с N-го по M-ный символ...
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / А так можно? :)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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