MySQL - макс. в группе результатов

Таким образом, возможно, мой титул вопроса не является самым релевантным, но я не хорош в sql, и я должен буду изучить его наверняка (Таким образом, намек для некоторой книги был бы очень полезен),

Во всяком случае я получил стол, который имеет после (важных) колонок:

user_id,username,revenue

и отчеты как это:

1,john,39
2,mark,53
3,philipp,7
1,john,17
2,mark,3
2,mark,100

Я должен получить пользователя, у которого есть самый большой доход, таким образом, я должен получить все ряды, вычислить совокупный доход и напечатать пользователя, у которого есть самый большой доход всего.

Любые намеки;)?

0
nl ja de
Вы пропускаете что-то в своих типовых данных? Почему <у кода> user_id 3 есть различное имя пользователя (philipp и отметка)?
добавлено автор hims056, источник
Тогда обновите свой вопрос. Текущий ответ прекрасен.
добавлено автор hims056, источник
жаль опечатка, имена пользователей - uniqe
добавлено автор Splendid, источник

1 ответы

Можно использовать ORDER BY и ПРЕДЕЛ :

SELECT user_id, username, SUM(revenue) FROM table
GROUP BY user_id /* add ', username' ONLY if two different usernames with the same user_id is a possible case */
ORDER BY SUM(revenue) DESC
LIMIT 0,1

С этим вы вычислите доход для каждого пользователя, вы заказываете, уменьшая общее количество и получаете только первое, так, чтобы у вас был самый высокий доход.

3
добавлено
На самом деле в любой системе управления базами данных этот вопрос был бы отклонен с ошибкой из-за неправильного использования группа пункт. MySQL действительно принимает его, но просто возвращает случайные ценности. Посмотрите здесь для объяснения: rpbouman.blogspot.de/2007/05/debunking-group-by-myths.html
добавлено автор a_horse_with_no_name, источник
Поскольку you' d скорее группа по имени вместо id? Что, если у двух парней есть то же самое имя?
добавлено автор Billy McNuggets, источник
И да, я думаю, что у последней линии должен быть "philipp" как имя пользователя.
добавлено автор Billy McNuggets, источник
Я вижу ваш пункт @MahmoudGamal, я добавил что-то в своем ответе, чтобы покрыть этот случай тогда.
добавлено автор Billy McNuggets, источник
Это закончится пользователь с id = 3: philipp , поскольку макс. общий доход с общим количеством = 107 , кроме него является неправильным общим количеством, это должен быть пользователь отметка с общим доходом = 156.
добавлено автор Mahmoud Gamal, источник
Нет это находится в вопросе, который вы отправили, и это происходит, потому что вы сгруппированы user_id и отбором имени пользователя, которое отличается для того же самого идентификатора пользователя.
добавлено автор Mahmoud Gamal, источник
@tsabz - Я знаю, что проблема находится в данных OP, таким образом группируясь user_id и , имя пользователя не решит проблему также, потому что есть имена пользователей, имеющие различные иды, Таким образом, я думаю группа именем пользователя и отбором только имени пользователя с id как в этом будет прекрасен в этом случае.
добавлено автор Mahmoud Gamal, источник
@MahmoudGamal - На самом деле в OP' есть некоторая ошибка; s определенные данные. Посмотрите это.
добавлено автор hims056, источник
В этой ситуации я соглашаюсь с @Mahmoud Джамалем, потому что id и имена не соответствуют так, лучше пойти с именем пользователя.
добавлено автор DARK_A, источник
DBA - русскоговорящее сообщество
DBA - русскоговорящее сообщество
1 345 участник(ов)

Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д. См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.

MySQL
MySQL
995 участник(ов)

The group is about MySQL. For code use hastebin.com. Admin: @smlkw

SqlCom.ru - Стиль жизни SQL
SqlCom.ru - Стиль жизни SQL
908 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только MS SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz). Предложения в @sql_ninja

SQL_Ninja
SQL_Ninja
340 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz)