gpt4 book ai didi

mysql - 从具有不同前缀的三个表中获取前 5 个值

转载 作者:行者123 更新时间:2023-11-29 07:02:49 25 4
gpt4 key购买 nike

我有三个表,即a_sws、b_sws、c_sws。它们都具有如下所示的相同列。

salesman_id salesman_name  product_price product_quantity

我可以使用以下查询获取单个表中销售额最高的前 5 名:

SELECT salesman_id, salesman_name  , 
SUM(product_price * product_quantity) AS TotalSales
FROM a_sws
GROUP BY salesman_id
ORDER BY SUM(product_price * product_quantity) DESC
LIMIT 5;

如何从三个表中获取前 5 名销售额?

最佳答案

如果我假设您想要对三个表中销售人员的记录进行求和,那么就会想到union all:

SELECT salesman_id, salesman_name,
SUM(product_price * product_quantity) AS TotalSales
FROM ((SELECT salesman_id, salesman_name, product_price, product_quantity
FROM a_sws
) UNION ALL
(SELECT salesman_id, salesman_name, product_price, product_quantity
FROM b_sws
) UNION ALL
(SELECT salesman_id, salesman_name, product_price, product_quantity
FROM c_sws
)
) abc
GROUP BY salesman_id
ORDER BY TotalSales DESC
LIMIT 5;

现在进行一些评论。您不应将销售人员 ID 和姓名与实际销售额存储在同一个表中。 id就足够了;您应该在 SalesPerson 表中查找该姓名。

此外,您不应拥有包含相同信息的三个表。这些数据应该进入一个表,可能有一列来标识用于分割原始数据的“类型”或时间范围。

关于mysql - 从具有不同前缀的三个表中获取前 5 个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42748834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com