3

集計関数を使用するときに Group By を理解するのに問題があります。内部結合を使用しなくても問題なく理解できましたが、何をグループ化すればよいかわかりません。

これが私のコードです。

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


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

ご覧のとおり、私は平均価格を見つけようとしていますが、何をグループ化すればよいかわかりません。そこにあるすべてのものをグループ化しようとしましたが、どれも機能しません。助言がありますか?

エラー: 列 'Products.ProductName' は、集計関数または GROUP BY 句のいずれにも含まれていないため、選択リストでは無効です。

4

1 に答える 1

1

基本的に、どの 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;

また、JOINs を実行するときは、実際にテーブルに適切にエイリアスを設定してから、フィールドでエイリアスを参照する必要があります。これはより透過的であり、SQL オプティマイザーによる暗黙的な変換が少なくて済み、より優れた保守が可能になります。

于 2013-11-18T21:19:40.563 に答える