使用GROUP BY就好比提出下面的问题:“我如何查看数据?“如果答案是“按照”某种要素来看那么你就可能用到GROUP BY。就我们的例子来说,你希望按照定单查看产品的数量,所以你就可以用OrderID字段进行分组。此外,采用ORDER BY 子句可以更容易地找出订购条目最多的定单。新的查询语句如下所示:
以下为引用的内容: SELECT o.OrderID, Count(od.ProductID) as NumItems FROM Orders o, [Order Details] od WHERE o.OrderID = od.OrderID GROUP BY o.OrderID ORDER BY NumItems DESC
现在你就得到问题的答案了。
◆理解规则
GROUP BY具有相当高的灵活性,当然你还得遵守相应的语法规则。比如说,你可以在ORDER BY 子句中包含多个表列。如果你想查看每一客户订购产品各个类型的数量,那么你必须通过定单创建查询把客户连接到产品。图A显示的4表连接显然就要用到了。之后你要根据客户和产品进行分组同时对Order Details表内的Quantity列计算总和。查询语句如下:
以下为引用的内容: SELECT c.CompanyName, p.ProductName, Sum(od.Quantity) as TotalBought FROM Customers c, Products p, Orders o, [Order Details] od WHERE c.CustomerID=o.CustomerID AND o.OrderID=od.OrderID AND od.ProductID=p.ProductID GROUP BY c.CompanyName, p.ProductName ORDER BY CompanyName, TotalBought DESC
SELECT o.OrderID, Max(od.Quantity) as TopItem, Sum(od.Quantity) as TotalBought FROM Orders o, [Order Details] od, Products p WHERE o.OrderID = od.OrderID AND od.ProductID=p.ProductID GROUP BY o.OrderID ORDER BY TotalBought DESC