Oracle sqlplus嵌套选择不起作用

问题描述:

我试图显示所有供应商的供应商代码,供应商名称和邮编,它们满足他们供应的每个库存物品 的价格值高于所有库存物品的平均值。Oracle sqlplus嵌套选择不起作用

我一直在尝试了一段时间,这是我能想出的最好的,虽然它不工作

SELECT SuppName, SuppCode, Postcode 
FROM Suppliers 
WHERE Suppliers.SuppCode = (
SELECT SuppCode 
FROM Stocks 
WHERE Suppliers.SuppCode = Stocks.SuppCode 
GROUP BY SuppCode 
HAVING MIN(Price) > AVG(Price) 
); 

如果任何人都可以给我一个提示在正确的方向在何处我错了,真的很感激。

create table Stocks 
    (StockNo  number(6) not null primary key, 
    StoreCode varchar2(6) not null, 
    Description varchar2(24), 
    Quantity  number(6), 
    Units  varchar2(12), 
    Reorder  number(6), 
    foreign key (StoreCode) 
    references Stores(StoreCode)); 

    create table Suppliers 
    (SuppCode varchar2(4) not null primary key, 
    SuppName varchar2(30), 
    Street varchar2(24), 
    Town  varchar2(16), 
    County varchar2(16), 
    PostCode varchar2(10), 
    TelNo  varchar2(16), 
    FaxNo  varchar2(16)) 
    cluster SupplyData(SuppCode); 

要获得这些耗材的代码,我会去聚合。你似乎想要:

SELECT s.SuppCode 
FROM Stocks s 
GROUP BY s.SuppCode 
HAVING MIN(s.Price) > (SELECT AVG(s2.Price) FROM Stocks s2); 
+0

感谢您的回答,我有这个在一个点,但后来努力获得供应商名称和邮编以及因为我不能在使用两个表时分组。我试图使用它作为子查询,但它返回多行,所以我有点难倒,并最终尝试其他解决方案。对不起,我仍然在与甲骨文的学习曲线,我错过了明显的东西? – cmorga1

+0

@ cmorga1。 。 。您可以使用明确的“JOIN”或“IN”运算符来获取供应商名称。 –