powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Значения полей соответствующие максимальным элементам
12 сообщений из 12, страница 1 из 1
Значения полей соответствующие максимальным элементам
    #35684988
valodzka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет, возникла такая задача - необходимо получить из таблицы значение поля если другое связанное поле максимально, на пример, получить имена сотрудников по депортаментам с максимальной зарплатой.
Максимум что смог придумать:
Код: plaintext
select name from people as p where p.id = (select id from people where department_id = b.department_id order by salary desc limit  1 ) 
Но решение кажется слишком сложным и искусственным, возможно есть проще?
...
Рейтинг: 0 / 0
Значения полей соответствующие максимальным элементам
    #35684996
Вариантов может быть масса. Но если этот по производительности устраивает, то зачем искать другие?
...
Рейтинг: 0 / 0
Значения полей соответствующие максимальным элементам
    #35685008
А вообще, есть однопроходный вариант. Вот только не факт, что он будет работать сильно быстрее, чем вариант с двумя заходами в таблицу...
...
Рейтинг: 0 / 0
Значения полей соответствующие максимальным элементам
    #35685014
Кстати, есть ещё нюанс... Как нужно отрабатывать в том случае, если в отделе есть несколко человек с одинаково высокой зарплатой? Кого из них возвращать? Любого? Всех?
...
Рейтинг: 0 / 0
Значения полей соответствующие максимальным элементам
    #35685088
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select distinct on ( department_id ) department_id, name, salary from people order by department_id, salary desc

есть и другие способы
...
Рейтинг: 0 / 0
Значения полей соответствующие максимальным элементам
    #35685943
eddie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
valodzka,

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

приведённый запрос мне показался эквивалентным такому:
Код: plaintext
select name from people where department_id = b.department_id order by salary desc limit  1 

но вы ведь имели в виду что-то другое?
...
Рейтинг: 0 / 0
Значения полей соответствующие максимальным элементам
    #35686418
valodzka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
eddie,

Мой запрос возвращает по одной записи для каждого департамента, ваш - только одну, да и что делает "where department_id = b.department_id " в вашем запросе не понятно
...
Рейтинг: 0 / 0
Значения полей соответствующие максимальным элементам
    #35686419
valodzka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эх,

В контексте задачи - любого.
...
Рейтинг: 0 / 0
Значения полей соответствующие максимальным элементам
    #35686420
valodzka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эх,

На тестовых данных работает терпимо, боюсь что на реальных как раз перестанет устраивать.
...
Рейтинг: 0 / 0
Значения полей соответствующие максимальным элементам
    #35686426
valodzka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LeXa NalBat
Код: plaintext
select distinct on ( department_id ) department_id, name, salary from people order by department_id, salary desc

есть и другие способы

Списибо, что-то такое и искал. Если не лень - приведите другие способы стоящие внимания.
...
Рейтинг: 0 / 0
Значения полей соответствующие максимальным элементам
    #35686428
eddie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
valodzkaeddie,

Мой запрос возвращает по одной записи для каждого департамента, ваш - только одну, да и что делает "where department_id = b.department_id " в вашем запросе не понятномне непонятно, что делает это условие в вашем запросе ;)

после двадцатого прочтения возникло такое мнение:
- вам нужно найти для каждого деартамента сотрудника с максимальной зарплатой;
- "b." в запросе - опечатка.

так?
...
Рейтинг: 0 / 0
Значения полей соответствующие максимальным элементам
    #35686672
valodzka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
eddie,

Да, извиняюсь, просмотрел, должно быть:
Код: plaintext
select name from people as p where p.id = (select id from people where department_id = p.department_id order by salary desc limit  1 ) 
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Значения полей соответствующие максимальным элементам
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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