我有一个Shippers
表和一个Orders
表。为了获得每个托运人发送的订单数量,我使用以下声明:
SELECT Shippers.ShipperName,COUNT(Orders.OrderID) AS NumberOfOrders FROM Orders
LEFT JOIN Shippers
ON Orders.ShipperID=Shippers.ShipperID
GROUP BY ShipperName;
工作正常。根据上述声明的结果,我如何获得每个托运人发送的订单的平均数?
答案 0 :(得分:1)
您可以使用AVG()函数实现此目的:
SELECT Shippers.ShipperName, AVG(Orders.OrderID) AS AvgNumberOfOrders
FROM Orders
LEFT JOIN Shippers
ON Orders.ShipperID=Shippers.ShipperID
GROUP BY ShipperName;
答案 1 :(得分:0)
尝试使用子查询
<a href="?locale=en">English</a> <a href="?locale=kan">
答案 2 :(得分:0)
一种方法是子查询:
SELECT AVG(NumberOfOrders)
FROM (SELECT s.ShipperName, COUNT(o.OrderID) AS NumberOfOrders
FROM Orders o LEFT JOIN
Shippers s
ON o.ShipperID = s.ShipperID
GROUP BY s.ShipperName
) t;
但是,更简单的方法就是自己做分组:
SELECT COUNT(o.OrderID) / COUNT(DISTINCT s.ShipperName)
FROM Orders o LEFT JOIN
Shippers s
ON o.ShipperID = s.ShipperID;
注意:两个合理的假设是每个托运人都有自己的身份证,并且所有托运人至少有一个订单。如果是这样,您可以将其简化为:
SELECT COUNT(o.OrderID) / COUNT(DISTINCT l.ShipperId)
FROM Orders o;