【问题标题】:Sub-query Join Error子查询连接错误
【发布时间】:2018-02-14 03:28:57
【问题描述】:

“使用子查询,列出订单总数(包含该产品)大于 500 的所有产品(产品编号、品牌和类别)”

在子查询之前我尝试使用连接:

SELECT PRODUCT.PRODUCT_NO, PRODUCT.BRAND,PRODUCT.PRODUCT_CATEGORY
FROM PRODUCT JOIN ORDERLINE
ON PRODUCT.PRODUCT_NO = ORDERLINE.PRODUCT_NO
WHERE SUM(ORDERLINE_NO) >= 500 ;

并得到以下错误;

ORA-00934: group function is not allowed here
00934. 00000 -  "group function is not allowed here"
*Cause:    
*Action:
Error at Line: 28 Column: 6

【问题讨论】:

  • 有人可以帮我将 John Woo 的这个答案转换为子查询吗?

标签: sql oracle join subquery


【解决方案1】:

你快到了,但由于你使用了 aggregate 函数,你必须有一个GROUP BY 子句和一个HAVING 子句来过滤聚合结果:

SELECT PRODUCT.PRODUCT_NO, 
       PRODUCT.BRAND,
       PRODUCT.PRODUCT_CATEGORY 
FROM PRODUCT JOIN ORDERLINE ON PRODUCT.PRODUCT_NO = ORDERLINE.PRODUCT_NO 
GROUP BY PRODUCT.PRODUCT_NO, 
       PRODUCT.BRAND,
       PRODUCT.PRODUCT_CATEGORY
HAVING COUNT(ORDERLINE_NO) >= 500 ;

并使用COUNT() 而不是SUM()

【讨论】:

  • 您能指导我将其更改为子查询吗?非常感谢@John
【解决方案2】:

试试这个:

不确定这是不是你想要的

SELECT PRODUCT.PRODUCT_NO, PRODUCT.BRAND,PRODUCT.PRODUCT_CATEGORY
FROM PRODUCT JOIN ORDERLINE
ON PRODUCT.PRODUCT_NO = ORDERLINE.PRODUCT_NO
GROUP BY PRODUCT.PRODUCT_NO, PRODUCT.BRAND,PRODUCT.PRODUCT_CATEGORY
HAVING COUNT(ORDERLINE_NO) >= 500 ;

【讨论】:

    猜你喜欢
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2019-11-26
    • 2019-12-08
    相关资源
    最近更新 更多