·¢²¼Ê±¼ä : ÐÇÆÚÈý ÎÄÕ¡¶Êý¾Ý¿âϵͳÔÀí¡·ÊµÑ鱨¸æ¸üÐÂÍê±Ï¿ªÊ¼ÔĶÁ1f1142d8376baf1ffd4fadbb
£¨3£©¶¨Òå»ù±¾±í
ÔÚTPCHÊý¾Ý¿âµÄSalesģʽÖд´½¨8¸ö»ù±¾±í¡£
/*ÉèÖõ±Ç°»á»°µÄËÑË÷·¾¶Îªsalesģʽ¡¢publicģʽ£¬»ù±¾±í¾Í»á×Ô¶¯´´½¨ÔÚsalesģʽÏ¡£*/
SET SEARCH_PATH TO Sales, Public; CREATE TABLE Region(
regionkey INTEGER PRIMARY KEY, name CHAR(25),
comment VARCHAR(152)); CREATE TABLE Nation(
nationkey INTEGER PRIMARY KEY, name CHAR(25),
address VARCHAR(40),
regionkey INTEGER REFERENCES REGION(REGIONKEY), comment VARCHAR(152)); CREATE TABLE Supplier(
suppkey INTEGER PRIMARY KEY, name CHAR(25),
address VARCHAR(40),
nationkey INTEGER REFERENCES Nation(nationkey), phone CHAR(15), acctbal REAL,
comment VARCHAR(101)); CREATE TABLE Part(
partkey INTEGER PRIMARY KEY, name VARCHAR(55), mfgr CHAR(25), /*ÖÆÔ쳧*/ brand CHAR(10), type VARCHAR (25), size INTEGER,
container CHAR(10), retailprice REAL,
comment VARCHAR(23)); CREATE TABLE PartSupp(
partkey INTEGER REFERENCES Part(partkey),
suppkey INTEGER REFERENCES Supplier(suppkey), availqty INTEGER, supplycost REAL ,
comment varchar(199),
PRIMARY KEY (parkey,suppkey)); CREATE TABLE Costomer(
custkey INTEGER PRIMARY KEY, name VARCHAR(25), address VARCHAR(40),
nationkey INTEGER REFERENCES Nation(nationkey), phone CHAR(15), acctbal REAL,
mktsegment CHAR(10), comment VARCHAR(117)); CREATE TABLE Orders(
orderkey INTEGER PRIMARY KEY,
custkey INTEGER REFERENCES Customer(custkey), orderstatus CHAR(1), totalprice REAL, orderdate DATE,
orderpriority INTEGER, comment VARCHAR(79)); CREATE TABLE Lineitem(
orderkey INTEGER REFERENCES Order(orderkey), partkey INTEGER REFERENCES Part(partkey),
suppkey INTEGER REFERENCES Supplier(suppkey), linenumber INTEGER, quantity REAL,
extendedprice REAL, discount REAL, tax REAL,
returnflag CHAR(1), linestatus CHAR(1), shipinstruct CHAR(25), shipmode CHAR(10), comment VARCHAR(44),
PRIMARY KEY(orderkey,linenumber),
FOREIGN KEY(Partkey,suppkey) REFERENCES PartSupp(partkey,suppkey)); 2¡¢Êý¾Ý»ù±¾²éѯ
£¨1£©µ¥±í²éѯ£¨ÊµÏÖͶӰ²Ù×÷£©
²éѯ¹©Ó¦É̵ÄÃû³Æ¡¢µØÖ·ºÍÁªÏµµç»°¡£
SELECTE name,address,phone FROMSupplier; £¨2£©µ¥±í²éѯ£¨ÊµÏÖÑ¡Ôñ²Ù×÷£©
²éѯ×î½üÒ»ÖÜÄÚÌá½»µÄ×ܼ۴óÓÚ1000ÔªµÄ¶©µ¥µÄ±àºÅ¡¢¹Ë¿Í±àºÅµÈ¶©µ¥µÄËùÓÐÐÅÏ¢¡£
SELECT *FROM Sales.Orders WHERE CURRENT_DATE-orderdata<7 AND totalprice >1000;
£¨3£©²»´ø·Ö×é¹ýÂËÌõ¼þµÄ·Ö×éͳ¼Æ²éѯ ͳ¼Æÿ¸ö¹Ë¿ÍµÄ¶©¹º½ð¶î
SELECT C.custkey ,SUM(O.totalprice) FROM customer C,Orders O WHERE C.custkey=O.custkey GROUP BY C.custkey;
£¨4£©´ø·Ö×é¹ýÂËÌõ¼þµÄ·Ö×éͳ¼Æ²éѯ
²éѯ¶©µ¥Æ½¾ù½ð¶î³¬¹ý1000ÔªµÄ¹Ë¿Í±àºÅ¼°ÆäÐÕÃû SELECT C.custkey£¬MAX£¨C.name£© FROM Customer C,Orders O WHERE C.custkey=O.custkey GROUP BY C.custkey;
HAVING AVG£¨O.totalprice£©>1000; £¨5£©±íµ¥×ÔÉíÁ¬½Ó²éѯ
²éѯÓë¡°½ð²Ö¼¯ÍÅ¡±ÔÚͬһ¸ö¹ú¼ÒµÄ¹©Ó¦É̱àºÅ¡¢Ãû³ÆºÍµØÖ·ÐÅÏ¢¡£ SELECT F.suppkey,F.name£¬F.address FROM Supplier F,Supplier S
WHERE F.nationkey=S.nationkey AND S.name='½ð²Ö¼¯ÍÅ'; £¨6£©Á½±íÁ¬½Ó²éѯ£¨ÆÕͨÁ¬½Ó£©
²éѯ¹©Ó¦¼Û¸ñ´óÓÚÁãÊÛ¼Û¸ñµÄÁã¼þÃû¡¢ÖÆÔìÉÌÃû¡¢ÁãÊÛ¼Û¸ñºÍ¹©Ó¦¼Û¸ñ¡£ SELECT P.name,P.mfgr,P.retailprice,PS.supplycost FROM Part P,Partsupp PS
WHERE P.retailprice>PS.supplycost; £¨7£©Á½±íÁ¬½Ó²éѯ£¨×ÔÈ»Á¬½Ó£©
²éѯ¹©Ó¦¼Û¸ñ´óÓÚÁãÊÛ¼Û¸ñµÄÁã¼þÃû¡¢ÖÆÔìÉÌÃû¡¢ÁãÊÛ¼Û¸ñºÍ¹©Ó¦¼Û¸ñ¡£ SELECT P.name,P.mfgr,P.retailprice,PS.supplycost FROM Part P,Partsupp PS
WHERE P.partkey=PS.partkey AND P.retailprice>PS.supplycost; £¨8£©Èý±íÁ¬½Ó²éѯ
²éѯ¹Ë¿Í¡°Ëվٿ⡱¶©¹ºµÄ¶©µ¥±àºÅ¡¢×ܼۼ°Æ䶩¹ºµÄÁã¼þ±àºÅ¡¢ÊýÁ¿ºÍÃ÷ϸ¼Û¸ñ¡£
SELECT O.orderkey,O.totalprice,L.partkey,L.quantity,L.extendedprice FROM Custom C,Orders O,Lineitem L
WHERE C.custkey=O.custkey AND O.orderkey=L.orderkey AND C.name='ËÕ¾Ù¿â'; 3¡¢Êý¾Ý¸ß¼¶²éѯʵÑé £¨1£©INǶÌײéѯ
²éѯ¶©¹ºÁË¡°º£´ó¡±ÖÆÔìµÄ¡°´¬²°Ä£Äâ¼ÝÊ»²Õ¡±µÄ¹Ë¿Í¡£ SELECT custkey£¬name FROM Customer
WHERE custkey IN ( SELECT O.custkey FROM Orders O,Lineitme L£¬PartSupp PS,Part P WHERE O.orderkey=L.orderkey AND L.partkey=PS.partkey AND L.suppkey=PS.suppkey AND PS.partkey=P.partkey AND P.mfgr='º£´ó' AND P.name='´¬²°Ä£Äâ¼ÝÊ»²Õ'); SELECT custkey,name FROM Customer
WHERE cuskey IN ( SELECT O.custkey
FROM Orders O,Lineitem L,Part P WHERE O.orderkey=L.orderkey AND L.partkey=P.partkey AND p.mfgr='º£´ó' AND P.name='´¬²°Ä£Äâ¼ÝÊ»²Õ'); £¨2£©µ¥²ãEXISTSǶÌײéѯ
²éѯûÓйºÂò¹ý¡°º£´ó¡±ÖÆÔìµÄ¡°´¬²°Ä£Äâ¼ÝÊ»²Õ¡±µÄ¹Ë¿Í¡£ SELECT custkey,name FROM Customer
WHERE NOT EXISTS( SELECT O.custkey FROM Orders O,Lineitem L,PartSupp PS,Part P WHERE C.cuskey=O.custkey AND O.orderkey=L.orderkey AND L.partkey=PS.partkey AND L.suppkey=PS.suppkey AND PS.partkey=P.partkey AND p.mfgr='º£´ó' AND P.name='´¬²°Ä£Äâ¼ÝÊ»²Õ'); £¨3£©Ë«²ãEXISTSǶÌײéѯ
²éѯÖÁÉÙ¹ºÂò¹ý¹Ë¿Í¡°ÕÅÈý¡±¹ºÂò¹ýµÄÈ«²¿Áã¼þµÄ¹Ë¿ÍÐÕÃû¡£ SELECT CA.name FROM Customer CA WHERE NOT EXISTS £¨SELECT *
FROM Customer CB,Oders OB,Lineitem LB WHERE CB.custkey=OB.custkey AND OB.orderkey=LB.orderkey AND CB.name='ÕÅÈý' AND NOT EXISTS(SELECT * FROM Orders OC,Lineitem LC WHERE CA.custkey=LC.custkey AND OC.orderkey=LC.orderkey AND LB.suppkey=LC.suppkey AND LB.partkey=LC.partkey)); £¨4£©FROM×Ó¾äÖеÄǶÌײéѯ
²éѯ¶©µ¥Æ½¾ù½ð¶î³¬¹ý1ÍòÔªµÄ¹Ë¿ÍÖеÄÖйú¼®¹Ë¿ÍÐÅÏ¢¡£ SELECT C.*
FROM Customer C,(SELECT custkey FROM Orders GROUP BY custkey HAVING AVG(totalprice)>10000) B,Nation N WHERE C.custkey=B.custkey AND C.nationkey=N.nationkey AND N.name='Öйú'; £¨5£©¼¯ºÏ²éѯ£¨½»£©
²éѯ¹Ë¿Í¡°ÕÅÈý¡±ºÍ¡°ÀîËÄ¡±¶¼¶©¹º¹ýµÄÈ«²¿Áã¼þµÄÐÅÏ¢¡£ SELECT P.*