3

すべての商品 (PRODUCT_ID、PRODUCT_NAME) と残りの在庫 (QUANTITY_IN_STOCK - REORDER_POINT) を一覧表示します。残りの在庫が平均 REORDER_QTY 値より多い行のみをリストします。

これまでのところ、次のことがわかっています。

SELECT product_name, product_id, quantity_in_stock - reorder_point
FROM product
WHERE quantity_in_stock - reorder_point > avg(reorder_qty)
GROUP BY product_name;

私たちが抱えている問題は avg(reorder_qty) にありますが、Google で検索してテキストを調べました。どんな助けでも大歓迎です。:)

宿題の質問をするのは一般的にタブーであることは理解していますが、私たちは答えを求めているのではなく、どこで間違ったのかを説明して、自分自身で答えに導くよう求めているのです。:)

ありがとう!

4

3 に答える 3

2

where 句は、ステートメントの from 部分によって返された行をフィルター処理しようとしています。

慣れるまでに時間がかかりますが、実際には質問には2つの部分があります..両方ともたまたま同じソースを参照しているだけです:

1.再注文の平均数量は?

2.平均的な再注文数量よりも多くの在庫がありますか.

これらの 2 つの手順を別々に試してから、組み合わせてみることをお勧めします。まず、再注文の平均数量を示すクエリを作成し、その値を定数として使用して、より大きなクエリを機能させます。

それが機能したら、固定値をクエリに置き換えて値を取得するのが簡単になることを願っています。

于 2013-09-23T16:59:39.317 に答える
2

WHERE 句で avg のような集計関数を使用することはできません。これは、WHEREが GROUP BY ステートメントに入る行を管理するためです。グループ化されたデータの出力に条件を課す必要があります。HAVING 句がこれを行います。

于 2013-09-23T16:52:34.630 に答える
0

を実行する場合GROUP BY、 は にSELECTもない列を参照できませんGROUP BY。さらに、集計関数を必要とするフィルタリングは、HAVING 句の一部として実行する必要があります。サブクエリを使用して平均再注文数量を取得することを検討してください。

于 2013-09-23T16:54:51.257 に答える