Mysql 从具有不同前缀的三个表中获取前5个值
我有三张桌子,分别是a_sws、b_sws、c_sws。 它们都有如下所示的相同列Mysql 从具有不同前缀的三个表中获取前5个值,mysql,sql,select,Mysql,Sql,Select,我有三张桌子,分别是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
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;
如何从这三个表中获得前五名的销售额?如果我假设您要对三个表中销售人员的记录进行汇总,那么我会想到
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和姓名与实际销售额存储在同一个表中。身份证是足够的;您应该在SalesPerson
表中查找姓名
此外,您不应该有三个具有相同信息的表。这些数据应该放在一个表中,可能有一列用于标识用于拆分原始数据的“类型”或时间范围。如果我假设您要将销售人员的记录汇总到三个表中,则会想到
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和姓名与实际销售额存储在同一个表中。身份证是足够的;您应该在SalesPerson
表中查找姓名
此外,您不应该有三个具有相同信息的表。这些数据应该放在一个表中,可能有一列用于标识用于拆分原始数据的“类型”或时间范围。显示所需的结果。现在还不清楚您希望如何组合数据,尽管我想到了
union all
。显示您想要的结果。目前还不清楚如何组合数据,不过我想到了union all
。