Guest User

Some Test Subqueries

a guest
Oct 23rd, 2024
29
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.90 KB | None | 0 0
  1. CREATE TABLE NATION (
  2. N_NATIONKEY INT NOT NULL,
  3. N_NAME CHAR(25) NOT NULL,
  4. N_REGIONKEY INT NOT NULL,
  5. N_COMMENT VARCHAR(152)
  6. );
  7.  
  8. CREATE TABLE REGION (
  9. R_REGIONKEY INT NOT NULL,
  10. R_NAME CHAR(25) NOT NULL,
  11. R_COMMENT VARCHAR(152)
  12. );
  13.  
  14. CREATE TABLE PART (
  15. P_PARTKEY INT NOT NULL,
  16. P_NAME VARCHAR(55) NOT NULL,
  17. P_MFGR CHAR(25) NOT NULL,
  18. P_BRAND CHAR(10) NOT NULL,
  19. P_TYPE VARCHAR(25) NOT NULL,
  20. P_SIZE INT NOT NULL,
  21. P_CONTAINER CHAR(10) NOT NULL,
  22. P_RETAILPRICE DECIMAL(15,2) NOT NULL,
  23. P_COMMENT VARCHAR(23) NOT NULL
  24. );
  25.  
  26. CREATE TABLE SUPPLIER (
  27. S_SUPPKEY INT NOT NULL,
  28. S_NAME CHAR(25) NOT NULL,
  29. S_ADDRESS VARCHAR(40) NOT NULL,
  30. S_NATIONKEY INT NOT NULL,
  31. S_PHONE CHAR(15) NOT NULL,
  32. S_ACCTBAL DECIMAL(15,2) NOT NULL,
  33. S_COMMENT VARCHAR(101) NOT NULL
  34. );
  35.  
  36. CREATE TABLE PARTSUPP (
  37. PS_PARTKEY INT NOT NULL,
  38. PS_SUPPKEY INT NOT NULL,
  39. PS_AVAILQTY INT NOT NULL,
  40. PS_SUPPLYCOST DECIMAL(15,2) NOT NULL,
  41. PS_COMMENT VARCHAR(199) NOT NULL
  42. );
  43.  
  44. CREATE TABLE CUSTOMER (
  45. C_CUSTKEY INT NOT NULL,
  46. C_NAME VARCHAR(25) NOT NULL,
  47. C_ADDRESS VARCHAR(40) NOT NULL,
  48. C_NATIONKEY INT NOT NULL,
  49. C_PHONE CHAR(15) NOT NULL,
  50. C_ACCTBAL DECIMAL(15,2) NOT NULL,
  51. C_MKTSEGMENT CHAR(10) NOT NULL,
  52. C_COMMENT VARCHAR(117) NOT NULL
  53. );
  54.  
  55. CREATE TABLE ORDERS (
  56. O_ORDERKEY INT NOT NULL,
  57. O_CUSTKEY INT NOT NULL,
  58. O_ORDERSTATUS CHAR(1) NOT NULL,
  59. O_TOTALPRICE DECIMAL(15,2) NOT NULL,
  60. O_ORDERDATE DATE NOT NULL,
  61. O_ORDERPRIORITY CHAR(15) NOT NULL,
  62. O_CLERK CHAR(15) NOT NULL,
  63. O_SHIPPRIORITY INT NOT NULL,
  64. O_COMMENT VARCHAR(79) NOT NULL
  65. );
  66.  
  67. CREATE TABLE LINEITEM (
  68. L_ORDERKEY INT NOT NULL,
  69. L_PARTKEY INT NOT NULL,
  70. L_SUPPKEY INT NOT NULL,
  71. L_LINENUMBER INT NOT NULL,
  72. L_QUANTITY DECIMAL(15,2) NOT NULL,
  73. L_EXTENDEDPRICE DECIMAL(15,2) NOT NULL,
  74. L_DISCOUNT DECIMAL(15,2) NOT NULL,
  75. L_TAX DECIMAL(15,2) NOT NULL,
  76. L_RETURNFLAG CHAR(1) NOT NULL,
  77. L_LINESTATUS CHAR(1) NOT NULL,
  78. L_SHIPDATE DATE NOT NULL,
  79. L_COMMITDATE DATE NOT NULL,
  80. L_RECEIPTDATE DATE NOT NULL,
  81. L_SHIPINSTRUCT CHAR(25) NOT NULL,
  82. L_SHIPMODE CHAR(10) NOT NULL,
  83. L_COMMENT VARCHAR(44) NOT NULL
  84. );
  85.  
  86. -- Insert test data into Customer table
  87. INSERT INTO customer (c_custkey, c_name, c_address, c_nationkey, c_phone, c_acctbal, c_mktsegment, c_comment)
  88. VALUES
  89. (1, 'Customer1', 'Address1', 1, '123-456-7890', 1000.50, 'Segment1', 'Comment1'),
  90. (2, 'Customer2', 'Address2', 2, '234-567-8901', 2000.75, 'Segment2', 'Comment2'),
  91. (3, 'Customer3', 'Address3', 3, '345-678-9012', 3000.00, 'Segment3', 'Comment3');
  92.  
  93. -- Insert test data into Orders table
  94. INSERT INTO orders (o_orderkey, o_custkey, o_orderstatus, o_totalprice, o_orderdate, o_orderpriority, o_clerk, o_shippriority, o_comment)
  95. VALUES
  96. (1, 1, 'F', 100.25, '2024-04-01', 'Low', 'Clerk1', 1, 'Comment1'),
  97. (2, 2, 'O', 200.50, '2024-04-02', 'Medium', 'Clerk2', 2, 'Comment2'),
  98. (3, 3, 'F', 300.75, '2024-04-03', 'High', 'Clerk3', 3, 'Comment3');
  99.  
  100. -- Insert test data into Lineitem table
  101. INSERT INTO lineitem (l_orderkey, l_partkey, l_suppkey, l_linenumber, l_quantity, l_extendedprice, l_discount, l_tax, l_returnflag, l_linestatus, l_shipdate, l_commitdate, l_receiptdate, l_shipinstruct, l_shipmode, l_comment)
  102. VALUES
  103. (1, 1, 1, 1, 10, 100.00, 0.05, 0.02, 'R', 'Shipped', '2024-04-05', '2024-04-06', '2024-04-07', 'Take Care', 'Air', 'Comment1'),
  104. (2, 2, 2, 2, 20, 200.00, 0.10, 0.03, 'N', 'Pending', '2024-04-06', '2024-04-07', NULL, 'Standard', 'Comment2'),
  105. (3, 3, 3, 3, 30, 300.00, 0.15, 0.04, 'R', 'Shipped', '2024-04-07', '2024-04-08', '2024-04-09', 'Handle with Care', 'Express', 'Comment3');
  106.  
  107. -- Insert test data into Part table
  108. INSERT INTO part (p_partkey, p_name, p_mfgr, p_brand, p_type, p_size, p_container, p_retailprice, p_comment)
  109. VALUES
  110. (1, 'Part1', 'MFGR1', 'Brand1', 'Type1', 10, 'Container1', 50.00, 'Comment1'),
  111. (2, 'Part2', 'MFGR2', 'Brand2', 'Type2', 20, 'Container2', 75.00, 'Comment2'),
  112. (3, 'Part3', 'MFGR3', 'Brand3', 'Type3', 30, 'Container3', 100.00, 'Comment3');
  113.  
  114. -- Insert test data into Supplier table
  115. INSERT INTO supplier (s_suppkey, s_name, s_address, s_nationkey, s_phone, s_acctbal, s_comment)
  116. VALUES
  117. (1, 'Supplier1', 'Address1', 1, '111-222-3333', 5000.00, 'Comment1'),
  118. (2, 'Supplier2', 'Address2', 2, '222-333-4444', 6000.00, 'Comment2'),
  119. (3, 'Supplier3', 'Address3', 3, '333-444-5555', 7000.00, 'Comment3');
  120.  
  121. -- -- Insert test data into Nation table
  122. INSERT INTO nation (n_nationkey, n_name, n_regionkey, n_comment)
  123. VALUES
  124. (1, 'Nation1', 1, 'Comment1'),
  125. (2, 'Nation2', 2, 'Comment2'),
  126. (3, 'Nation3', 3, 'Comment3');
  127.  
  128. -- Insert test data into Region table
  129. INSERT INTO region (r_regionkey, r_name, r_comment)
  130. VALUES
  131. (1, 'Region1', 'Comment1'),
  132. (2, 'Region2', 'Comment2'),
  133. (3, 'Region3', 'Comment3');
  134.  
  135. -- Uncorrelated
  136. -- SELECT c.c_name, (SELECT MAX(o.o_orderdate) FROM orders o)
  137. -- AS max_order_date
  138. -- FROM customer c;
  139.  
  140. -- Correlated
  141. SELECT c.c_name, o.o_totalprice
  142. FROM customer c
  143. JOIN orders o ON c.c_custkey = o.o_custkey
  144. WHERE o.o_totalprice = (
  145. SELECT MAX(o2.o_totalprice)
  146. FROM orders o2
  147. WHERE c.c_custkey = o2.o_custkey
  148. );
  149.  
  150. -- SELECT c.c_name, o.o_orderpriority
  151. -- FROM customer c
  152. -- JOIN orders o ON c.c_custkey = o.o_custkey
  153. -- WHERE o.o_orderkey = (
  154. -- SELECT FIRST_VALUE(o2.o_orderkey)
  155. -- FROM orders o2
  156. -- WHERE c.c_phone = o2.o_clerk
  157. -- );
  158.  
  159. -- Select clause subquery
  160. -- EXPLAIN SELECT
  161. -- c_custkey,
  162. -- c_name,
  163. -- (
  164. -- SELECT AVG(o_totalprice)
  165. -- FROM (
  166. -- SELECT o.o_totalprice
  167. -- FROM orders o
  168. -- WHERE o.o_custkey = c.c_custkey
  169. -- ORDER BY o.o_totalprice DESC
  170. -- LIMIT 5
  171. -- ) AS top_orders
  172. -- ) AS avg_total_price
  173. -- FROM customer c;
  174.  
  175. -- SELECT EXISTS (SELECT * FROM orders o);
  176. -- SELECT 6 IN (SELECT o.o_orderkey FROM orders o);
  177.  
  178. -- More Complex
  179. -- EXPLAIN SELECT
  180. -- c_custkey,
  181. -- c_name,
  182. -- (
  183. -- SELECT COUNT(*)
  184. -- FROM (
  185. -- SELECT o.o_orderkey
  186. -- FROM orders o
  187. -- WHERE o.o_custkey = c.c_custkey
  188. -- ) AS distinct_orders
  189. -- ) AS num_distinct_orders,
  190. -- (
  191. -- SELECT AVG(o_totalprice)
  192. -- FROM (
  193. -- SELECT o.o_totalprice
  194. -- FROM orders o
  195. -- WHERE o.o_custkey = c.c_custkey
  196. -- ORDER BY o.o_totalprice DESC
  197. -- LIMIT 5
  198. -- ) AS top_orders
  199. -- ) AS avg_top_order_priority
  200. -- FROM customer c
  201. -- ORDER BY num_distinct_orders DESC;
  202.  
  203.  
  204. -- Complex example
  205. -- EXPLAIN SELECT
  206. -- c.c_custkey AS c_custkey,
  207. -- c.c_name AS c_customer_name,
  208. -- (
  209. -- SELECT COUNT(DISTINCT o.o_orderkey)
  210. -- FROM orders o
  211. -- WHERE o.o_custkey = c.c_custkey
  212. -- ) AS order_count,
  213. -- (
  214. -- SELECT AVG(l.l_quantity)
  215. -- FROM lineitem l
  216. -- WHERE l.l_orderkey IN (
  217. -- SELECT o.o_orderkey
  218. -- FROM orders o
  219. -- WHERE o.o_custkey = c.c_custkey
  220. -- )
  221. -- ) AS avg_order_quantity,
  222. -- (
  223. -- SELECT MAX(l.l_extendedprice)
  224. -- FROM lineitem l
  225. -- WHERE l.l_orderkey IN (
  226. -- SELECT o.o_orderkey
  227. -- FROM orders o
  228. -- WHERE o.o_custkey = c.c_custkey
  229. -- )
  230. -- ) AS max_order_extended_price
  231. -- FROM
  232. -- customer c
  233. -- WHERE
  234. -- c.c_nationkey = (
  235. -- SELECT n.n_nationkey
  236. -- FROM nation n
  237. -- WHERE n.n_name = 'GERMANY'
  238. -- )
  239. -- ORDER BY
  240. -- order_count DESC, c_customer_name ASC;
  241.  
Advertisement
Add Comment
Please, Sign In to add comment