Выборка поля по максимальному показателю другого поля - MySQL
Формулировка задачи:
Здравствуйте. Подскажите, как можно сделать выборку, например, покупателя по максимальному критерию количества товаров, которые он купил? Но при этом нужно учитывать тот факт, что в таблице один пользователь находиться в нескольких записях(это видно на скриншоте). Т.е по короткому, нужно выбрать самого заядлого покупателя...
И таким же макаром и самый покупаемый товар...
А еще можно ли выбрать самый любимый товар покупателя?) было бы не плохо)
sold_id - номер покупки
product_id_ref - это айди товара из другой таблицы products
product_name - в принципе это есть в той же таблице products
product_count - количество купленного товара
product_sum - сумма этих товаров (конкретного, а не всех, что он купил, т.е купил столько то этого и столько то другого и все это каждый раз добавляет новую запись.
buyer_name - имя покупателя
shopping_time - время покупки в datatime
Решение задачи: «Выборка поля по максимальному показателю другого поля»
textual
Листинг программы
SELECT buyer_name, SUM(Product_count) AS NUMBER FROM tests2 GROUP BY buyer_name ORDER BY NUMBER DESC LIMIT 1
Объяснение кода листинга программы
buyer_name- название таблицы или базы данных, откуда производится выборкаProduct_count- название поля, по которому производится группировка данныхSUM- функция агрегирования, используется для подсчета суммы значений поляProduct_countNUMBER- псевдоним (alias) для поля, содержащего сумму значений поляProduct_counttests2- название таблицы, из которой производится выборкаGROUP BY buyer_name- группировка данных по полюbuyer_nameORDER BY NUMBER DESC- сортировка данных по полюNUMBERв порядке убыванияLIMIT 1- ограничение выборки одной строкой- В результате выполнения запроса будет возвращено одно поле -
buyer_name, содержащее имя покупателя с максимальным количеством продуктов