获得平均计数

时间:2016-02-05 12:30:58

标签: mysql sql

我有一个Shippers表和一个Orders表。为了获得每个托运人发送的订单数量,我使用以下声明:

SELECT Shippers.ShipperName,COUNT(Orders.OrderID) AS NumberOfOrders FROM Orders
LEFT JOIN Shippers
ON Orders.ShipperID=Shippers.ShipperID
GROUP BY ShipperName;

工作正常。根据上述声明的结果,我如何获得每个托运人发送的订单的平均数

3 个答案:

答案 0 :(得分:1)

您可以使用AVG()函数实现此目的:

SELECT Shippers.ShipperName, AVG(Orders.OrderID) AS AvgNumberOfOrders 
FROM Orders
LEFT JOIN Shippers
ON Orders.ShipperID=Shippers.ShipperID
GROUP BY ShipperName;

更多信息:http://www.w3schools.com/sql/sql_func_avg.asp

答案 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;