[编辑] 有人告诉我查询中有一个子查询,所以这就是我想出的内容以及现在要处理的内容。[新代码]
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 的结果是 3 和 15,而不是 1 和 5,我想我也会把它放在这里,以防任何人都可以解决这个问题。
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;
先谢谢了