Sql 获取供应商名称,其中提供的所有项目均高于平均水平
我有两张桌子Sql 获取供应商名称,其中提供的所有项目均高于平均水平,sql,oracle,Sql,Oracle,我有两张桌子 SUPPLIERS( SUPPCODE, SUPPNAME, STREET, TOWN, COUNTRY, POSTCODE, TELNO, FAXNO) STOCKS( STOCKNO, STORECODE, DESCRIPTION, QUANTITY, UNITS, REORDER, PRICE, SUPPCODE) 我想找到供应商的名称,其中他们
SUPPLIERS(
SUPPCODE,
SUPPNAME,
STREET,
TOWN,
COUNTRY,
POSTCODE,
TELNO,
FAXNO)
STOCKS(
STOCKNO,
STORECODE,
DESCRIPTION,
QUANTITY,
UNITS,
REORDER,
PRICE,
SUPPCODE)
我想找到供应商的名称,其中他们供应的所有物品的价格都高于表中所有物品的平均价格
我知道我可以找到高于平均水平的所有项目使用
SELECT S1.SuppCode, S1.SuppName, S1.PostCode
FROM Suppliers S1, Stocks S2
WHERE Price > (
SELECT AVG(Price)
FROM Stocks
)
AND S1.SuppCode = S2.SuppCode;
但我不知道如何确保供应商的每一项都高于平均水平
平均值是
AVG(PRICE)
----------
5.14411765
桌子看起来像这样
SQL> select suppcode, price
2 from stocks
3 order by suppcode
4 ;
SUPPCO PRICE
------ ----------
S1 2.85
S1 2.85
S1 2.14
S1 .49
S1 .98
S1 1.59
S1 1.84
S1 1.35
S2 5.15
S2 2.98
S2 11.38
SUPPCO PRICE
------ ----------
S2 12.85
S3 2.57
S3 4.95
S3 1.89
S3 4.11
S3 8.58
S3 1.97
S3 .81
S3 6.19
S3 3.65
S4 4.83
SUPPCO PRICE
------ ----------
S4 2.42
S4 .22
S4 .45
S4 .47
S4 .42
S4 2.15
S4 3.48
S5 7.99
S5 7.85
S5 6.47
S6 23.99
SUPPCO PRICE
------ ----------
S6 32.99
考虑到这一点,我想得到S5和S6
Oracle 11g R2架构设置:
问题1:
:
Oracle 11g R2架构设置:
问题1:
:如果我理解正确,他想知道只销售高于平均价格的商品的供应商的名称,作为下次的建议,每当您有SQL问题时,请提供SQLFIDLE数据。只需转到并创建一个包含数据的表。然后在问题中发布链接。这将有助于我们这些试图回答您的问题的人在您的数据上向您展示查询是如何工作的。如果我正确理解了这个问题,他想知道只销售高于平均价格的商品的供应商的名称,作为下次的建议,每当您有SQL问题时,请提供一个SQLFIDLE数据。只需转到并创建一个包含数据的表。然后在问题中发布链接。这将有助于尝试回答您的问题的我们向您展示查询是如何工作的。
CREATE TABLE SUPPLIERS(
SUPPCODE NUMBER(5,0) PRIMARY KEY,
SUPPNAME VARCHAR2(20),
STREET VARCHAR2(20),
TOWN VARCHAR2(20),
COUNTRY VARCHAR2(20),
POSTCODE VARCHAR2(20),
TELNO NUMBER(11,0),
FAXNO NUMBER(11,0)
);
CREATE TABLE STOCKS(
STOCKNO NUMBER(5,0) PRIMARY KEY,
STORECODE VARCHAR2(20),
DESCRIPTION VARCHAR2(20),
QUANTITY NUMBER(5,0),
UNITS NUMBER(5,0),
REORDER NUMBER(5,0),
PRICE NUMBER(12,2),
SUPPCODE NUMBER(5,0),
FOREIGN KEY ( SUPPCODE ) REFERENCES SUPPLIERS ( SUPPCODE )
);
SELECT SUPPCODE
FROM SUPPLIERS s
WHERE NOT EXISTS (SELECT 1
FROM STOCKS k
WHERE s.SUPPCODE = k.SUPPCODE
AND price <= (SELECT AVG( price ) AS avg_price FROM STOCKS)
)