Задать вопрос
@n199a
Java

Как найти максимальные значения из сумм в MySQL?

Есть таблица с данными:
| user_id | price |
--------------------
| 1        |   30      |
--------------------
| 1        |   20      |
--------------------
| 1        |   50      |
--------------------
| 1        |   70      |
--------------------
| 2        |   30      |
--------------------
| 2        |   30      |
--------------------
| 3        |   30      |
--------------------
| 3        |   5       |
--------------------


Хочу найти user_id у которого сумма столбцов price будет максимальной. Ответ будет:
| user_id | price |
--------------------
| 1        |   170      |
--------------------


Для достижения резульатат делаю запрос:
SELECT user_id, SUM(price) FROM `order` GROUP BY user_id ORDER BY SUM(price) DESC LIMIT 1;


Но может быть ситуация, что будет два user_id с максимальными суммами и суммы будут одинаковые:
| user_id | price |
--------------------
| 1        |   170      |
--------------------
| 4        |   170      |
--------------------


Как тогда будет выглядеть запрос? Типа такого:
SELECT o.user_id, MAX(found_sum) FROM (SELECT user_id, SUM(price) AS found_sum FROM 'order' GROUP BY user_id) AS o;
  • Вопрос задан
  • 1915 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
@galaxy
С mysql 8:
SELECT user_id, price FROM (
	SELECT t.*, rank() over (order by price desc) as r FROM (
		SELECT user_id, SUM(price) price FROM `order` GROUP BY user_id
	) t
) t2
 WHERE r = 1
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@n199a Автор вопроса
Java
SELECT user_id, MAX(found_sum)
FROM (SELECT user_id, SUM(price) AS found_sum FROM `order` GROUP BY user_id) as uifs;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы