使用具有内部联接的聚合函数

时间:2013-11-18 21:16:35

标签: sql sql-server grouping aggregates

我在使用聚合函数时遇到了解Group By的问题。我没有使用内连接就明白了,但现在我不明白要分组的内容。

这是我的代码。

SELECT  ProductName,
        Products.ProductNumber,
        AVG(WholesalePrice),
        AVG(RetailPrice)


FROM    Products INNER JOIN ProductVendors
        ON Products.ProductNumber = ProductVendors.DaysToDeliver;

正如你所知,我正试图找到平均价格,而且我不知道要分组的内容。我尝试了那里的所有东西分组,没有一个会起作用。有什么建议吗?

以下是错误:列'Products.ProductName'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。

1 个答案:

答案 0 :(得分:0)

基本上,对于任何DBMS,您需要GROUP BY您未执行聚合功能的项目:

SELECT Products.ProductName AS ProductName
    ,Products.ProductNumber AS ProductNumber
    ,AVG(Products.WholesalePrice) AS AvgWholesalePrice
    ,AVG(Products.RetailPrice) AS AvgRetailPrice
FROM Products Products
INNER JOIN ProductVendors Vendors ON Products.ProductNumber = Vendors.DaysToDeliver    
GROUP BY Products.ProductName, Products.ProductNumber;

此外,在执行JOIN时,您应该对表进行适当的别名,然后使用其字段引用别名。它更透明,SQL优化器需要更少的隐式转换,并允许更好的维护。