Mysql 根据两个表中的总销售额获取前5名数据

Mysql 根据两个表中的总销售额获取前5名数据,mysql,Mysql,我有“销售额”表和类似此方案的数据: 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

我有“销售额”表和类似此方案的数据:

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
user_a.jpg | User a | 300
user_a.jpg | User b | 370
user_a.jpg | User c | 360
如何根据每个月的总销售额获得前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,基于最高总销售额的cuz

但输出总是这样:

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

第一列总是user_a.jpg

你已经成功了一半。将查询与users表联接,如下所示:

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

你似乎把列名弄混了;您必须相应地修改上述查询。

您的预期输出和当前输出在问题中是相同的。也许您需要编辑并修复该部分。现在,您的查询应该完全满足您的需要;所以你需要设置一个小提琴来展示你的主张!你的问题一团糟。如果图片表只包含“user_a.jpg”,那么输出如何包含“user_c.jpg”?查询返回两个结果列,但报告三个。我想你的问题的根源是同样的草率行为。很抱歉,如果你不能很好地理解我的信息,我已为此尽了最大努力:(