大家好,我有一个需要支持的问题。
我试图通过表中的单个查询来获取前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
(而不是float
或double
),否则会出现精度错误,并且您的数字不会累加。关于mysql - MySQL从表中获得前三名供应商,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26153152/