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

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

我有三张桌子,分别是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;

如何从这三个表中获得前五名的销售额?

如果我假设您要对三个表中销售人员的记录进行汇总,那么我会想到
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