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”?查询返回两个结果列,但报告三个。我想你的问题的根源是同样的草率行为。很抱歉,如果你不能很好地理解我的信息,我已为此尽了最大努力:(