【发布时间】:2018-09-16 12:09:07
【问题描述】:
我有桌子:
评论
- Product_ID(产品表上 Product_ID 的 FK)
- 推荐
- 质量(分数表上的 Score_ID 的 FK)
- 值(分数表上 Score_ID 的 FK)
得分
- Score_ID
- 价值
- 说明
产品
- Product_ID
- 姓名
- 价格
子类别
- SubCat_ID
- 姓名
产品子类别
- Product_ID(产品表上 Product_ID 的 FK)
- SubCat_ID(子类别表上的 SubCat_ID 的 FK)
我的目标是创建一个查询,返回“4K 超高清电视”子类别中产品的平均质量和价值,并且价格超过 4000 美元。我不能只返回 Score_ID,我需要返回该值的平均值(这是 Score 表中的一个字段)。
我已经为此工作了几个小时,这就是我想出的。但是,我不知道如何解决该错误。我相信这与子查询中的 AVG 函数有关,或者我使用 SELECT 的方式。
COLUMN PID FORMAT 999
COLUMN AVG_QUALITY FORMAT 99999999999
COLUMN AVG_VALUE FORMAT 99999999999
SELECT R.PRODUCT_ID AS PID,
AVG_QUALITY = (SELECT AVG(SQU.SCORE_VALUE)
FROM SCORE SQU
INNER JOIN SCORE SQU ON SQU.SCORE_ID = R.SCORE_QUALITY
WHERE R.SCORE_QUALITY = SQU.SCORE_ID),
AVG_VALUE = (SELECT AVG(SVA.SCORE_VALUE)
FROM SCORE SVA
INNER JOIN SCORE SVA ON SVA.SCORE_ID = R.SCORE_VALUE
WHERE R.SCORE_VALUE = SVA.SCORE_ID)
FROM REVIEW R
INNER JOIN PRODUCT P ON P.PRODUCT_ID = R.PRODUCT_ID
INNER JOIN PRODUCTSUBCATEGORY PS ON PS.PRODUCT_ID = P.PRODUCT_ID
INNER JOIN SUBCATEGORY S ON S.SUBCAT_ID = PS.SUBCAT_ID
WHERE S.NAME = '4K Ultra HD TVs'
AND P.PRICE > 4000;
AVG_QUALITY = (SELECT AVG(SQU.SCORE_VALUE)
*
ERROR at line 2:
ORA-00923: FROM keyword not found where expected
【问题讨论】:
-
。 .欢迎来到堆栈溢出。请用您正在使用的数据库标记您的问题。此外,将查询作为 text 而不是图像放入问题中。这让其他人更容易理解它。
-
提示:为什么你的第一行不是
SELECT PID = R.PRODUCT_ID? -
@melpomene 。 . .投反对票并不是真正的帮助新贡献者的精神。
-
@GordonLinoff 为什么不呢?
-
据我所知,我认为您对 SQL Server(或其他 DBMS)感到困惑。在 Oracle 中,您不会为选择中的变量赋值(tyhis 是 @melpomene 在他的评论中的意思)。
标签: sql oracle subquery average