大家好,我有一个需要支持的问题。

我试图通过表中的单个查询来获取前3名供应商。

这是原始问题:按收入排名前三位的供应商是谁,它们在哪里?

这是在线表,您必须运行查询才能创建新表。

http://www.w3schools.com/sql/trysql.asp?filename=trysql_select_all

CREATE TABLE ByCustomerOrders AS
SELECT
  o.OrderID
, p.ProductName
, p.ProductID
, Price
, Quantity
, Price * Quantity AS subtotal
, c.CustomerID
, s.SupplierID
FROM OrderDetails    AS od
LEFT JOIN Orders     AS o     ON od.OrderID = o.OrderID
LEFT JOIN Products   AS p     ON p.ProductID = od.ProductID
LEFT JOIN Customers  AS c     on c.CustomerID = o.CustomerID
LEFT JOIN Suppliers  AS s     ON s.SupplierID = p.SupplierID;


由此,它创建了一个新表,我只需要列出前3个供应商,几乎是最多的供应商ID行值。

一些帮助,将不胜感激。

最佳答案

如果要按收入(收入是所有小计的总和)获得前三名,这应该可行:

SELECT s.*, SUM(co.subtotal) as revenue
FROM ByCustomerOrders co
INNER JOIN Suppliers s ON co.SupplierID = s.SupplierID
GROUP BY co.SupplierID
ORDER BY revenue DESC
LIMIT 3;


PS:您应该考虑对表示货币的列使用decimal(而不是floatdouble),否则会出现精度错误,并且您的数字不会累加。

关于mysql - MySQL从表中获得前三名供应商,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26153152/

10-11 20:18