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

Россия Архангельск 604 78182 Retro 10 26.03.1967 1
Россия Архангельск 604 78182 Taro 5 22.04.1997 2
Россия Архангельская 605 7818 Taro 20 31.03.1967 3
Россия Архангельская 605 7818 Yura 10 01.01.1967 4
Россия стационарные 721 781 Taro 30 30.05.2007 5
Россия стационарные 721 781 Tina 20 03.02.1900 6
Россия Архангельск 604 78182 Tina 2 01.10.2006 7

Необходим запрос SQL, оставляющий строки с уникальной записью из 4-ой колонки и МАКСимальным значеним из третей, т.е. в указанном случае:

Россия Архангельск 604 78182 Retro 10 26.03.1967 1
Россия Архангельск 604 78182 Taro 5 22.04.1997 2
Россия Архангельская 605 7818 Yura 10 01.01.1967 4
Россия Архангельск 604 78182 Tina 2 01.10.2006 7

Спасибо.
Юрий
...
Рейтинг: 0 / 0
Помогите с запросом начинающему
    #36083328
goldfuzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Точнее так...


Архангельск 604 78182 Retro 10 26.03.1967 1
Архангельск 604 78182 Taro 5 22.04.1997 2
Архангельская 605 7818 Taro 20 31.03.1967 3
Архангельская 605 7818 Yura 10 01.01.1967 4
Стационарные 721 781 Taro 30 30.05.2007 5
Стационарные 721 781 Tina 20 03.02.1900 6
Архангельск 604 78182 Tina 2 01.10.2006 7

Результат запроса:

Архангельск 604 78182 Retro 10 26.03.1967 1
Архангельск 604 78182 Taro 5 22.04.1997 2
Архангельская 605 7818 Yura 10 01.01.1967 4
Архангельск 604 78182 Tina 2 01.10.2006 7

Спасибо.
Юрий
...
Рейтинг: 0 / 0
Помогите с запросом начинающему
    #36083330
goldfuzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЕЩЕ ТОЧНЕЕ....


Архангельск 604 78182 Retro 10 26.03.1967 1
Архангельск 604 78182 Taro 5 22.04.1997 2
Архангельская 605 7818 Taro 20 31.03.1967 3
Архангельская 605 7818 Yura 10 01.01.1967 4
Стационарные 721 781 Taro 30 30.05.2007 5
Стационарные 721 781 Tina 20 03.02.1900 6
Архангельск 604 78182 Tina 2 01.10.2006 7

Результат запроса:

Архангельск 604 78182 Retro 10 26.03.1967 1
Архангельск 604 78182 Taro 5 22.04.1997 2
Архангельская 605 7818 Yura 10 01.01.1967 4
Архангельск 604 78182 Tina 2 01.10.2006 7

Спасибо.
Юрий
...
Рейтинг: 0 / 0
Помогите с запросом начинающему
    #36083571
дддддд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ключевые слова -MAX, GROUP BY
...
Рейтинг: 0 / 0
Помогите с запросом начинающему
    #36083590
Serguei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goldfuzzЕЩЕ ТОЧНЕЕ....


Архангельск 604 78182 Retro 10 26.03.1967 1
Архангельск 604 78182 Taro 5 22.04.1997 2
Архангельская 605 7818 Taro 20 31.03.1967 3
Архангельская 605 7818 Yura 10 01.01.1967 4
Стационарные 721 781 Taro 30 30.05.2007 5
Стационарные 721 781 Tina 20 03.02.1900 6
Архангельск 604 78182 Tina 2 01.10.2006 7

Результат запроса:

Архангельск 604 78182 Retro 10 26.03.1967 1
Архангельск 604 78182 Taro 5 22.04.1997 2
Архангельская 605 7818 Yura 10 01.01.1967 4
Архангельск 604 78182 Tina 2 01.10.2006 7

Спасибо.
Юрий

А еще точнее? ;-)
...
Рейтинг: 0 / 0
Помогите с запросом начинающему
    #36083740
CrazyAdmin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SergueigoldfuzzЕЩЕ ТОЧНЕЕ....


Архангельск 604 78182 Retro 10 26.03.1967 1
Архангельск 604 78182 Taro 5 22.04.1997 2
Архангельская 605 7818 Taro 20 31.03.1967 3
Архангельская 605 7818 Yura 10 01.01.1967 4
Стационарные 721 781 Taro 30 30.05.2007 5
Стационарные 721 781 Tina 20 03.02.1900 6
Архангельск 604 78182 Tina 2 01.10.2006 7

Результат запроса:

Архангельск 604 78182 Retro 10 26.03.1967 1
Архангельск 604 78182 Taro 5 22.04.1997 2
Архангельская 605 7818 Yura 10 01.01.1967 4
Архангельск 604 78182 Tina 2 01.10.2006 7

Спасибо.
Юрий

А еще точнее? ;-)
А какой столбец 4-ый?
...
Рейтинг: 0 / 0
Помогите с запросом начинающему
    #36083862
goldfuzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CrazyAdminSergueigoldfuzzЕЩЕ ТОЧНЕЕ....


Архангельск 604 78182 Retro 10 26.03.1967 1
Архангельск 604 78182 Taro 5 22.04.1997 2
Архангельская 605 7818 Taro 20 31.03.1967 3
Архангельская 605 7818 Yura 10 01.01.1967 4
Стационарные 721 781 Taro 30 30.05.2007 5
Стационарные 721 781 Tina 20 03.02.1900 6
Архангельск 604 78182 Tina 2 01.10.2006 7

Результат запроса:

Архангельск 604 78182 Retro 10 26.03.1967 1
Архангельск 604 78182 Taro 5 22.04.1997 2
Архангельская 605 7818 Yura 10 01.01.1967 4
Архангельск 604 78182 Tina 2 01.10.2006 7

Спасибо.
Юрий

А еще точнее? ;-)
А какой столбец 4-ый?

Тот, который за третьим )
Первый - Архангельск
Второй - 604
Третий - 78182 , отмеченный красным
Четвертй - Retro..

Вариант с group by для четвертого поля и Max для третьего подходил бы в случае, если бы нужно было выбрать только именно их, а всего полей - больше 20.
ЧТо делать, как группировать остальные. First, last, avg и пр не подходят....
...
Рейтинг: 0 / 0
Помогите с запросом начинающему
    #36084724
vinger4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
предлагаю следующий изврат:
select r.* from Ваша_таблица r
where r.c3||r.c4 in
(
select max(c3)||t.c4 from Ваша_таблица t
group by c4
)
т.е. идентифицировать строчки через "склейку" значений третьего и четвёртого столбца. Правда, такой способ мне представляется довольно медленным и не гарантирует для каждой "склейки" вернуть одну строку. Другими словами, если найденное максимальное значение встречается в двух строках, то такой запрос вернёт эти две строки
...
Рейтинг: 0 / 0
Помогите с запросом начинающему
    #36084745
vinger4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот решение красивее (по моему мнению, конечно):
select r.* from Ваша_таблица r
where r.c3=
(
select max(c3) from Ваша_таблица t
where t.c4=r.c4
)
...
Рейтинг: 0 / 0
Помогите с запросом начинающему
    #36084970
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vinger4,
ну и до кучи (модификация первого без конката, модификация второго с заменой корреляции на джойн - может быть быстрее)
Код: plaintext
1.
2.
3.
4.
5.
6.
select r.* from Ваша_таблица r
inner join 
(
select max(c3) as c3,c4 from Ваша_таблица group by c4
) t on
r.c3=t.c3 and r.c4=t.c4
...
Рейтинг: 0 / 0
Помогите с запросом начинающему
    #36085309
goldfuzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, пробую... :)
...
Рейтинг: 0 / 0
Помогите с запросом начинающему
    #36085334
Senya_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goldfuzz,

С такими вопросами Вам бытрее помогут в профильной ветке по используемой СУБД. Например, в MSSQL поможет, думаю, TOP n WITH TIES
...
Рейтинг: 0 / 0
Помогите с запросом начинающему
    #36086379
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vinger4идентифицировать строчки через "склейку" значений третьего и четвёртого столбца
Ошибка. Вы явно полагаетесь на формат данных в полях. Сравните 99 111 и 991 11.

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


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