Как составить запрос? - MySQL (220444)
Формулировка задачи:
Например, есть таблица income, со столбцами id, user, amount. Нужно выбрать оттуда 1 пользователя, у которого бы SUM столбцов amount была больше, чем у остальных.
Решение задачи: «Как составить запрос?»
textual
Листинг программы
SELECT MAX(s), USER FROM (SELECT USER, SUM(amount) AS s FROM usr GROUP BY USER ORDER BY s DESC) AS d
Объяснение кода листинга программы
Ваш запрос SQL выглядит следующим образом:
SELECT MAX(s), USER FROM (SELECT USER, SUM(amount) AS s FROM usr GROUP BY USER ORDER BY s DESC) AS dЭтот запрос выполняет следующие действия:- Внутренний запрос
SELECT USER, SUM(amount) AS s FROM usr GROUP BY USER ORDER BY s DESCсуммирует все значения столбцаamountдля каждого пользователя и сортирует результаты в порядке убывания суммы. Этот запрос также создает псевдонимsдля столбца с суммами. - Внешний запрос
SELECT MAX(s), USER FROM (SELECT USER, SUM(amount) AS s FROM usr GROUP BY USER ORDER BY s DESC) AS dвыбирает максимальное значение столбцаsи соответствующее ему имя пользователя из подзапроса. Обратите внимание, что в этом запросе используется псевдонимdдля подзапроса. Это обычно делается для избегания путаницы с именами столбцов в подзапросе, особенно если подзапрос возвращает более одного столбца.