Страницы

Поиск по вопросам

суббота, 14 декабря 2019 г.

SQL-запрос, выводящий max(count(…)) и другие поля таблицы, соответствующие max-параметру

#запрос #sql


Имеются следующие таблицы:
Person(поля Nom и др.) - информация о людях,
Profit(поля ID, Source, Moneys) - источники дохода,
Have_d(поля Nom, ID и др.) - связь между людьми и их доходами.

Каждый человек может иметь несколько источников дохода.
Необходимо вывести всю информацию о самом популярном источнике дохода. То есть необходимо
подсчитать количество включений всех видов доходов, выбрать максимальное и вывести
полученное число вместе со всеми полями таблицы Profit, соответствующими полученному
максимуму.
Я смогла вывести максимальное число, но не получается составить запрос на вывод строки
из Profit, ему соответствующей.
    select max(expr1)
    from (select count(nom) as expr1
        from profit, have_d, person
        where profit.id = have_d.id 
        and have_d.nom = person.nom
        group by source)
    


Ответы

Ответ 1



Проблема известная. :-) Здесь найдете решение.

Ответ 2



Спасибо за ссылку. Теперь в нужном виде запрос выглядит так: select top 1 t1.* from (select profit.source,count(*) as expr1 from profit, have_d where profit.id = have_d.id group by profit.source) as t1 order by expr1 desc

Ответ 3



select t1.* from (select profit.*,count(*) as expr1 from profit, have_d where profit.id = have_d.id group by profit.id order by expr1 desc) as t1 limit 1 Я уверен есть решение лучше (скажем без limit). Таблица person не нужна.

Комментариев нет:

Отправить комментарий