Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день, у меня возникла небольшая алгоритмическая проблема в выборе данных.
Таблица insurance_contract содержит информацию о контрактах, у контакта есть свой агент, его зарегистрировавший.
Хотелось бы подсчитать, так сказать, самого свободного, на котором висит меньше всех контрактов агента.
Попробовал это реализовать этим запросом:
Неактивен
Неактивен
1. запрос у вас ошибочный:
select Agent, min(mycount) -- подразумевает, что вы делаете неявную группировку по mycount, т.е у вас будет выбрано минимальное значение mycount и случайное agent.
2. задача не точна - если самых свободных несколько, то нужны все или один из них?
Неактивен
vasya написал:
1. запрос у вас ошибочный:
select Agent, min(mycount) -- подразумевает, что вы делаете неявную группировку по mycount, т.е у вас будет выбрано минимальное значение mycount и случайное agent.
2. задача не точна - если самых свободных несколько, то нужны все или один из них?
Хм... я Вас понял в плане первого замечания, но как его можно было бы исправить?
Ну а насчёт второго, то нужен только один, любой.
Неактивен
в вашем случае можно:
Неактивен
vasya написал:
в вашем случае можно:
select Agent from insurance_contract group by Agent order by count(*) limit 1;
а вообще в статье есть несколько способов.
А не могли бы Вы описать результаты работы этого запроса. Как он отбирает наименее "занятых"?
Неактивен
order by count(*) limit 1 -- сортировать по кол-ву контрактов по возрастанию, оставить первую запись
Неактивен
Ага, я Вас понял, спасибо за объяснение и представленный вариант
Неактивен