2

[編集]クエリにサブクエリが含まれていると言われたので、ここに私が思いついたものと今取り組むべきものがあります.[新しいコード]

 SELECT P.prodid, P.prodname, SUM(O.qtysold) AS "TOTAL SALES"
 FROM ORDERLINE O
 INNER JOIN PRODUCT P
 ON O.prodid = P.prodid
 INNER JOIN ALLOCATION A
 ON P.prodid = A.prodid
 GROUP BY P.prodid, P.prodname
 HAVING (SELECT AVG(score) AS score
            FROM QUALITYCHECK
            HAVING score >= 2)
 ORDER BY 3 ASC;

[元の投稿] それで、正しい結果が得られるように、このコードをさまざまな方法で実行しようと試みてきました。これが機能する場合、これが私の最も正確なものだと思います:

SELECT P.prodid, P.prodname, SUM(O.qtysold) AS "TOTAL SALES"
FROM ORDERLINE O
INNER JOIN PRODUCT P
ON O.prodid = P.prodid
INNER JOIN ALLOCATION A
ON P.prodid = A.prodid
GROUP BY P.prodid, P.prodname
WHERE (SELECT AVG(score) FROM QUALITYCHECK) >= 2
ORDER BY 3 ASC;

~エラーは8行目~

それでは、私が達成しようとしていることを説明しましょう。Orderline テーブルから販売された製品の数量を取得しようとしていますが、製品の品質チェック スコアの平均が 2 より大きい場合のみです。これを機能させたいのですが、別の方法があれば、すべての提案を歓迎します。

別の方法もありますが、SUM の結果が 1 と 5 ではなく 3 と 15 になっています。

 SELECT P.prodid, P.prodname, SUM(O.qtysold) AS "TOTAL SALES"
 FROM ORDERLINE O
 INNER JOIN PRODUCT P
 ON O.prodid = P.prodid
 INNER JOIN ALLOCATION A
 ON P.prodid = A.prodid
 INNER JOIN QUALITYCHECK Q
 ON A.prodid = Q.prodid
 GROUP BY P.prodid, P.prodname
 HAVING AVG(Q.score) >= 2
 ORDER BY 3 ASC;

前もって感謝します:D

4

2 に答える 2

0
 Try this 

SELECT P.prodid, P.prodname, SUM(O.qtysold) AS "TOTAL SALES"
 FROM ORDERLINE O
      INNER JOIN PRODUCT P
        ON O.prodid = P.prodid
      INNER JOIN ALLOCATION A
        ON P.prodid = A.prodid
      INNER JOIN QUALITYCHECK Q
        ON A.prodid = Q.prodid AND AVG(Q.score) >= 2 
      GROUP BY P.prodid, P.prodname
 ORDER BY 3 ASC;
于 2014-09-28T09:45:01.613 に答える