Получить 5 лучших данных на основе общих продаж из 2 таблиц - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть таблица «продажи» и данные, подобные этой схеме:

name | Amount| Month
user a      100     1
user b      240     1
user c      120     1
user a      200     2
user b      130     2
user c      240     2

И таблица пользователей, подобная этой:

User    |  Pict
user a    user_a.jpg
user b    user_a.jpg
user c    user_a.jpg

Как получить ТОП 5 пользователей на основе общих продаж каждыймесяц, я пытался использовать запрос, как это, но всегда показывалось не правильно:

SELECT User, 
   SUM(amount) AS total_sales 
 FROM sales 
 WHERE MONTH BETWEEN 1 AND 12
 GROUP BY User
 ORDER BY total_sales DESC
 LIMIT 10

И результат должен быть:

user_a.jpg | User a | 300
user_b.jpg | User b | 370
user_c.jpg | User c | 360

Таким образом, порядок должен быть: B,C, Потому что на основе общего объема продаж.

Но вывод всегда так:

user_a.jpg | User a | 300
user_a.jpg | User b | 370
user_a.jpg | User c | 360

Первый столбец всегда user_a.jpg

1 Ответ

0 голосов
/ 28 ноября 2018

Ты на полпути.Объедините ваш запрос с таблицей пользователей следующим образом:

SELECT users.user, users.pict, total_sales
FROM (
    SELECT name, SUM(Amount) AS total_sales
    FROM sales
    WHERE Month BETWEEN 1 AND 12
    GROUP BY name
    ORDER BY total_sales
    LIMIT 5
) AS user_sales
INNER JOIN users ON user_sales.name = users.user
ORDER BY total_sales DESC

Вы, похоже, перепутали имена столбцов;Вы должны пересмотреть вышеупомянутый запрос соответственно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...