tpch.td 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527
  1. # Copyright Materialize, Inc. and contributors. All rights reserved.
  2. #
  3. # Use of this software is governed by the Business Source License
  4. # included in the LICENSE file at the root of this repository.
  5. #
  6. # As of the Change Date specified in that file, in accordance with
  7. # the Business Source License, use of this software will be governed
  8. # by the Apache License, Version 2.0.
  9. $ set-arg-default single-replica-cluster=quickstart
  10. # Test the cardinality of TPCH tables. For tables that have a random
  11. # cardinality, don't depend on exact count that could change if the rng
  12. # implementation changes, just check that it's within the spec range.
  13. $ postgres-execute connection=postgres://mz_system:materialize@${testdrive.materialize-internal-sql-addr}
  14. ALTER SYSTEM SET enable_create_table_from_source = false
  15. ! CREATE SOURCE gen
  16. IN CLUSTER ${arg.single-replica-cluster}
  17. FROM LOAD GENERATOR TPCH (SCALE FACTOR 0)
  18. contains: multi-output sources require a FOR TABLES (..) or FOR ALL TABLES statement
  19. $ postgres-execute connection=postgres://mz_system:materialize@${testdrive.materialize-internal-sql-addr}
  20. ALTER SYSTEM SET enable_create_table_from_source = true
  21. ! CREATE SOURCE gen
  22. IN CLUSTER ${arg.single-replica-cluster}
  23. FROM LOAD GENERATOR TPCH (SCALE FACTOR 9223372036854775807)
  24. contains: unsupported scale factor 9223372036854776000
  25. ! CREATE SOURCE gen
  26. IN CLUSTER ${arg.single-replica-cluster}
  27. FROM LOAD GENERATOR TPCH (SCALE FACTOR -1)
  28. contains: unsupported scale factor -1
  29. > CREATE SOURCE gen
  30. IN CLUSTER ${arg.single-replica-cluster}
  31. FROM LOAD GENERATOR TPCH (SCALE FACTOR .01, UP TO 100)
  32. > CREATE TABLE customer FROM SOURCE gen (REFERENCE customer);
  33. > CREATE TABLE lineitem FROM SOURCE gen (REFERENCE lineitem);
  34. > CREATE TABLE nation FROM SOURCE gen (REFERENCE nation);
  35. > CREATE TABLE orders FROM SOURCE gen (REFERENCE orders);
  36. > CREATE TABLE part FROM SOURCE gen (REFERENCE part);
  37. > CREATE TABLE partsupp FROM SOURCE gen (REFERENCE partsupp);
  38. > CREATE TABLE region FROM SOURCE gen (REFERENCE region);
  39. > CREATE TABLE supplier FROM SOURCE gen (REFERENCE supplier);
  40. > SHOW SOURCES
  41. name type cluster comment
  42. -----------------------------------------------------------------------
  43. gen load-generator ${arg.single-replica-cluster} ""
  44. gen_progress progress <null> ""
  45. > SHOW TABLES
  46. name comment
  47. ------------------------
  48. customer ""
  49. lineitem ""
  50. nation ""
  51. orders ""
  52. part ""
  53. partsupp ""
  54. region ""
  55. supplier ""
  56. # SF * 150,000
  57. > SELECT count(*) FROM customer
  58. 1500
  59. # For each row in the ORDERS table, a random number of rows within [1 .. 7] in the LINEITEM table
  60. > SELECT count(*) >= 15000 AND count(*) <= 15000 * 7 FROM lineitem
  61. true
  62. # 25 rows in the NATION table
  63. > SELECT count(*) FROM nation
  64. 25
  65. # For each row in the CUSTOMER table, ten rows in the ORDERS table
  66. > SELECT count(*) FROM orders
  67. 15000
  68. # SF * 200,000
  69. > SELECT count(*) FROM part
  70. 2000
  71. # For each row in the PART table, four rows in PartSupp table
  72. > SELECT count(*) FROM partsupp
  73. 8000
  74. # 5 rows in the REGION table
  75. > SELECT count(*) FROM region
  76. 5
  77. # SF * 10,000
  78. > SELECT count(*) FROM supplier
  79. 100
  80. ##################
  81. # Output testing #
  82. ##################
  83. # It would be better to do the output testing in an slt for easier rewrites, but that is currently not possible, see
  84. # https://materializeinc.slack.com/archives/C01LKF361MZ/p1666634493207499?thread_ts=1666621743.361779&cid=C01LKF361MZ
  85. # Copied the queries from misc/python/materialize/optbench/workload/tpch.sql
  86. > CREATE VIEW revenue (supplier_no, total_revenue) AS
  87. SELECT
  88. l_suppkey,
  89. sum(l_extendedprice * (1 - l_discount))
  90. FROM
  91. lineitem
  92. WHERE
  93. l_shipdate >= DATE '1996-01-01'
  94. AND l_shipdate < DATE '1996-01-01' + INTERVAL '3' month
  95. GROUP BY
  96. l_suppkey;
  97. ################################################
  98. # Without indexes
  99. ################################################
  100. # Query 01
  101. > SELECT
  102. l_returnflag,
  103. l_linestatus,
  104. sum(l_quantity) AS sum_qty,
  105. sum(l_extendedprice) AS sum_base_price,
  106. sum(l_extendedprice * (1 - l_discount)) AS sum_disc_price,
  107. sum(l_extendedprice * (1 - l_discount) * (1 + l_tax)) AS sum_charge,
  108. avg(l_quantity) AS avg_qty,
  109. avg(l_extendedprice) AS avg_price,
  110. avg(l_discount) AS avg_disc,
  111. count(*) AS count_order
  112. FROM
  113. lineitem
  114. WHERE
  115. l_shipdate <= DATE '1998-12-01' - INTERVAL '60' day
  116. GROUP BY
  117. l_returnflag,
  118. l_linestatus
  119. ORDER BY
  120. l_returnflag,
  121. l_linestatus;
  122. 4 values hashing to 87d2cbecfc8cdcd9c9614dfb7e6d236f
  123. # Query 02
  124. > SELECT
  125. s_acctbal,
  126. s_name,
  127. n_name,
  128. p_partkey,
  129. p_mfgr,
  130. s_address,
  131. s_phone,
  132. s_comment
  133. FROM
  134. part, supplier, partsupp, nation, region
  135. WHERE
  136. p_partkey = ps_partkey
  137. AND s_suppkey = ps_suppkey
  138. AND p_size = CAST (15 AS smallint)
  139. AND p_type LIKE '%BRASS'
  140. AND s_nationkey = n_nationkey
  141. AND n_regionkey = r_regionkey
  142. AND r_name = 'EUROPE'
  143. AND ps_supplycost
  144. = (
  145. SELECT
  146. min(ps_supplycost)
  147. FROM
  148. partsupp, supplier, nation, region
  149. WHERE
  150. p_partkey = ps_partkey
  151. AND s_suppkey = ps_suppkey
  152. AND s_nationkey = n_nationkey
  153. AND n_regionkey = r_regionkey
  154. AND r_name = 'EUROPE'
  155. )
  156. ORDER BY
  157. s_acctbal DESC, n_name, s_name, p_partkey;
  158. 5 values hashing to 746698506bf99abc24b74f03ffb7375a
  159. # Query 03
  160. > SELECT
  161. l_orderkey,
  162. sum(l_extendedprice * (1 - l_discount)) AS revenue,
  163. o_orderdate,
  164. o_shippriority
  165. FROM
  166. customer,
  167. orders,
  168. lineitem
  169. WHERE
  170. c_mktsegment = 'BUILDING'
  171. AND c_custkey = o_custkey
  172. AND l_orderkey = o_orderkey
  173. AND o_orderdate < DATE '1995-03-15'
  174. AND l_shipdate > DATE '1995-03-15'
  175. GROUP BY
  176. l_orderkey,
  177. o_orderdate,
  178. o_shippriority
  179. ORDER BY
  180. revenue DESC,
  181. o_orderdate;
  182. 127 values hashing to 637be0ff3f50cd612b004a69958bfccb
  183. # Query 04
  184. > SELECT
  185. o_orderpriority,
  186. count(*) AS order_count
  187. FROM
  188. orders
  189. WHERE
  190. o_orderdate >= DATE '1993-07-01'
  191. AND o_orderdate < DATE '1993-07-01' + INTERVAL '3' month
  192. AND EXISTS (
  193. SELECT
  194. *
  195. FROM
  196. lineitem
  197. WHERE
  198. l_orderkey = o_orderkey
  199. AND l_commitdate < l_receiptdate
  200. )
  201. GROUP BY
  202. o_orderpriority
  203. ORDER BY
  204. o_orderpriority;
  205. 4 values hashing to 320decef503bc240bc73101fc659a1db
  206. # Query 05
  207. > SELECT
  208. n_name,
  209. sum(l_extendedprice * (1 - l_discount)) AS revenue
  210. FROM
  211. customer,
  212. orders,
  213. lineitem,
  214. supplier,
  215. nation,
  216. region
  217. WHERE
  218. c_custkey = o_custkey
  219. AND l_orderkey = o_orderkey
  220. AND l_suppkey = s_suppkey
  221. AND c_nationkey = s_nationkey
  222. AND s_nationkey = n_nationkey
  223. AND n_regionkey = r_regionkey
  224. AND r_name = 'ASIA'
  225. AND o_orderdate >= DATE '1994-01-01'
  226. AND o_orderdate < DATE '1995-01-01'
  227. GROUP BY
  228. n_name
  229. ORDER BY
  230. revenue DESC;
  231. 5 values hashing to 8e24fa90f7160fb0dc1e7bfaaa3e9c73
  232. # Query 06
  233. > SELECT
  234. sum(l_extendedprice * l_discount) AS revenue
  235. FROM
  236. lineitem
  237. WHERE
  238. l_quantity < 24
  239. AND l_shipdate >= DATE '1994-01-01'
  240. AND l_shipdate < DATE '1994-01-01' + INTERVAL '1' year
  241. AND l_discount BETWEEN 0.06 - 0.01 AND 0.07;
  242. 1 values hashing to d9c979f1eed5940788ff3653321acac4
  243. # Query 07
  244. > SELECT
  245. supp_nation,
  246. cust_nation,
  247. l_year,
  248. sum(volume) AS revenue
  249. FROM
  250. (
  251. SELECT
  252. n1.n_name AS supp_nation,
  253. n2.n_name AS cust_nation,
  254. extract(year FROM l_shipdate) AS l_year,
  255. l_extendedprice * (1 - l_discount) AS volume
  256. FROM
  257. supplier,
  258. lineitem,
  259. orders,
  260. customer,
  261. nation n1,
  262. nation n2
  263. WHERE
  264. s_suppkey = l_suppkey
  265. AND o_orderkey = l_orderkey
  266. AND c_custkey = o_custkey
  267. AND s_nationkey = n1.n_nationkey
  268. AND c_nationkey = n2.n_nationkey
  269. AND (
  270. (n1.n_name = 'FRANCE' AND n2.n_name = 'GERMANY')
  271. or (n1.n_name = 'GERMANY' AND n2.n_name = 'FRANCE')
  272. )
  273. AND l_shipdate BETWEEN DATE '1995-01-01' AND DATE '1996-12-31'
  274. ) AS shipping
  275. GROUP BY
  276. supp_nation,
  277. cust_nation,
  278. l_year
  279. ORDER BY
  280. supp_nation,
  281. cust_nation,
  282. l_year;
  283. 4 values hashing to 0ab7e162c0d17f7fbdebbcb6e6eb4e7f
  284. # Query 08
  285. > SELECT
  286. o_year,
  287. sum(case
  288. when nation = 'BRAZIL' then volume
  289. else 0
  290. end) / sum(volume) AS mkt_share
  291. FROM
  292. (
  293. SELECT
  294. extract(year FROM o_orderdate) AS o_year,
  295. l_extendedprice * (1 - l_discount) AS volume,
  296. n2.n_name AS nation
  297. FROM
  298. part,
  299. supplier,
  300. lineitem,
  301. orders,
  302. customer,
  303. nation n1,
  304. nation n2,
  305. region
  306. WHERE
  307. p_partkey = l_partkey
  308. AND s_suppkey = l_suppkey
  309. AND l_orderkey = o_orderkey
  310. AND o_custkey = c_custkey
  311. AND c_nationkey = n1.n_nationkey
  312. AND n1.n_regionkey = r_regionkey
  313. AND r_name = 'AMERICA'
  314. AND s_nationkey = n2.n_nationkey
  315. AND o_orderdate BETWEEN DATE '1995-01-01' AND DATE '1996-12-31'
  316. AND p_type = 'ECONOMY ANODIZED STEEL'
  317. ) AS all_nations
  318. GROUP BY
  319. o_year
  320. ORDER BY
  321. o_year;
  322. 2 values hashing to dbf3e9692c45719c7b16f17cbb102e8a
  323. # Query 09
  324. > SELECT
  325. nation,
  326. o_year,
  327. sum(amount) AS sum_profit
  328. FROM
  329. (
  330. SELECT
  331. n_name AS nation,
  332. extract(year FROM o_orderdate) AS o_year,
  333. l_extendedprice * (1 - l_discount) - ps_supplycost * l_quantity AS amount
  334. FROM
  335. part,
  336. supplier,
  337. lineitem,
  338. partsupp,
  339. orders,
  340. nation
  341. WHERE
  342. s_suppkey = l_suppkey
  343. AND ps_suppkey = l_suppkey
  344. AND ps_partkey = l_partkey
  345. AND p_partkey = l_partkey
  346. AND o_orderkey = l_orderkey
  347. AND s_nationkey = n_nationkey
  348. AND p_name like '%green%'
  349. ) AS profit
  350. GROUP BY
  351. nation,
  352. o_year
  353. ORDER BY
  354. nation,
  355. o_year DESC;
  356. 172 values hashing to b0fbcce5ec14e4786bb47cc6a365d7e3
  357. # Query 10
  358. > SELECT
  359. c_custkey,
  360. c_name,
  361. sum(l_extendedprice * (1 - l_discount)) AS revenue,
  362. c_acctbal,
  363. n_name,
  364. c_address,
  365. c_phone,
  366. c_comment
  367. FROM
  368. customer,
  369. orders,
  370. lineitem,
  371. nation
  372. WHERE
  373. c_custkey = o_custkey
  374. AND l_orderkey = o_orderkey
  375. AND o_orderdate >= DATE '1993-10-01'
  376. AND o_orderdate < DATE '1994-01-01'
  377. AND o_orderdate < DATE '1993-10-01' + INTERVAL '3' month
  378. AND l_returnflag = 'R'
  379. AND c_nationkey = n_nationkey
  380. GROUP BY
  381. c_custkey,
  382. c_name,
  383. c_acctbal,
  384. c_phone,
  385. n_name,
  386. c_address,
  387. c_comment
  388. ORDER BY
  389. revenue DESC;
  390. 366 values hashing to 23dd20e994576aec9e5898b128a6b5a5
  391. # Query 11
  392. > SELECT
  393. ps_partkey,
  394. sum(ps_supplycost * ps_availqty) AS value
  395. FROM
  396. partsupp,
  397. supplier,
  398. nation
  399. WHERE
  400. ps_suppkey = s_suppkey
  401. AND s_nationkey = n_nationkey
  402. AND n_name = 'GERMANY'
  403. GROUP BY
  404. ps_partkey having
  405. sum(ps_supplycost * ps_availqty) > (
  406. SELECT
  407. sum(ps_supplycost * ps_availqty) * 0.0001
  408. FROM
  409. partsupp,
  410. supplier,
  411. nation
  412. WHERE
  413. ps_suppkey = s_suppkey
  414. AND s_nationkey = n_nationkey
  415. AND n_name = 'GERMANY'
  416. )
  417. ORDER BY
  418. value DESC;
  419. 103 values hashing to 2a4b6afc2de49adfe1cf81446d355cb1
  420. # Query 12
  421. > SELECT
  422. l_shipmode,
  423. sum(case
  424. when o_orderpriority = '1-URGENT'
  425. or o_orderpriority = '2-HIGH'
  426. then 1
  427. else 0
  428. end) AS high_line_count,
  429. sum(case
  430. when o_orderpriority <> '1-URGENT'
  431. AND o_orderpriority <> '2-HIGH'
  432. then 1
  433. else 0
  434. end) AS low_line_count
  435. FROM
  436. orders,
  437. lineitem
  438. WHERE
  439. o_orderkey = l_orderkey
  440. AND l_shipmode IN ('MAIL', 'SHIP')
  441. AND l_commitdate < l_receiptdate
  442. AND l_shipdate < l_commitdate
  443. AND l_receiptdate >= DATE '1994-01-01'
  444. AND l_receiptdate < DATE '1994-01-01' + INTERVAL '1' year
  445. GROUP BY
  446. l_shipmode
  447. ORDER BY
  448. l_shipmode;
  449. 2 values hashing to 3c31b94c99bd77e96003c2059416ed7a
  450. # Query 13
  451. > SELECT
  452. c_count,
  453. count(*) AS custdist
  454. FROM
  455. (
  456. SELECT
  457. c_custkey,
  458. count(o_orderkey) c_count
  459. FROM
  460. customer LEFT OUTER JOIN orders ON
  461. c_custkey = o_custkey
  462. AND o_comment NOT LIKE '%special%requests%'
  463. GROUP BY
  464. c_custkey
  465. ) AS c_orders
  466. GROUP BY
  467. c_count
  468. ORDER BY
  469. custdist DESC,
  470. c_count DESC;
  471. 24 values hashing to 0425a49d65f09ba044a8ae4e34fe2fef
  472. # Query 14
  473. > SELECT
  474. 100.00 * sum(case
  475. when p_type like 'PROMO%'
  476. then l_extendedprice * (1 - l_discount)
  477. else 0
  478. end) / sum(l_extendedprice * (1 - l_discount)) AS promo_revenue
  479. FROM
  480. lineitem,
  481. part
  482. WHERE
  483. l_partkey = p_partkey
  484. AND l_shipdate >= DATE '1995-09-01'
  485. AND l_shipdate < DATE '1995-09-01' + INTERVAL '1' month;
  486. 1 values hashing to 52009b01ec2cea22a360dbb1de1e5acf
  487. # Query 15
  488. > SELECT
  489. s_suppkey,
  490. s_name,
  491. s_address,
  492. s_phone,
  493. total_revenue
  494. FROM
  495. supplier,
  496. revenue
  497. WHERE
  498. s_suppkey = supplier_no
  499. AND total_revenue = (
  500. SELECT
  501. max(total_revenue)
  502. FROM
  503. revenue
  504. )
  505. ORDER BY
  506. s_suppkey;
  507. 1 values hashing to cef6c8859cb05a1680529bf4b688bbdb
  508. # Query 16
  509. > SELECT
  510. p_brand,
  511. p_type,
  512. p_size,
  513. count(DISTINCT ps_suppkey) AS supplier_cnt
  514. FROM
  515. partsupp,
  516. part
  517. WHERE
  518. p_partkey = ps_partkey
  519. AND p_brand <> 'Brand#45'
  520. AND p_type NOT LIKE 'MEDIUM POLISHED%'
  521. AND p_size IN (49, 14, 23, 45, 19, 3, 36, 9)
  522. AND ps_suppkey NOT IN (
  523. SELECT
  524. s_suppkey
  525. FROM
  526. supplier
  527. WHERE
  528. s_comment like '%Customer%Complaints%'
  529. )
  530. GROUP BY
  531. p_brand,
  532. p_type,
  533. p_size
  534. ORDER BY
  535. supplier_cnt DESC,
  536. p_brand,
  537. p_type,
  538. p_size;
  539. 309 values hashing to c4a6eb0207205cae9790096e7e4381d7
  540. # Query 17
  541. > SELECT
  542. sum(l_extendedprice) / 7.0 AS avg_yearly
  543. FROM
  544. lineitem,
  545. part
  546. WHERE
  547. p_partkey = l_partkey
  548. AND p_brand = 'Brand#23'
  549. AND p_container = 'MED BOX'
  550. AND l_quantity < (
  551. SELECT
  552. 0.2 * avg(l_quantity)
  553. FROM
  554. lineitem
  555. WHERE
  556. l_partkey = p_partkey
  557. );
  558. 1 values hashing to 6ea48615d6dd1ff31045cd67a15ef60a
  559. # Query 18
  560. > SELECT
  561. c_name,
  562. c_custkey,
  563. o_orderkey,
  564. o_orderdate,
  565. o_totalprice,
  566. sum(l_quantity)
  567. FROM
  568. customer,
  569. orders,
  570. lineitem
  571. WHERE
  572. o_orderkey IN (
  573. SELECT
  574. l_orderkey
  575. FROM
  576. lineitem
  577. GROUP BY
  578. l_orderkey having
  579. sum(l_quantity) > 300
  580. )
  581. AND c_custkey = o_custkey
  582. AND o_orderkey = l_orderkey
  583. GROUP BY
  584. c_name,
  585. c_custkey,
  586. o_orderkey,
  587. o_orderdate,
  588. o_totalprice
  589. ORDER BY
  590. o_totalprice DESC,
  591. o_orderdate;
  592. 3 values hashing to 321256b5aef1aedab78f125c5925de92
  593. # Query 19
  594. > SELECT
  595. sum(l_extendedprice* (1 - l_discount)) AS revenue
  596. FROM
  597. lineitem,
  598. part
  599. WHERE
  600. (
  601. p_partkey = l_partkey
  602. AND p_brand = 'Brand#12'
  603. AND p_container IN ('SM CASE', 'SM BOX', 'SM PACK', 'SM PKG')
  604. AND l_quantity >= CAST (1 AS smallint) AND l_quantity <= CAST (1 + 10 AS smallint)
  605. AND p_size BETWEEN CAST (1 AS smallint) AND CAST (5 AS smallint)
  606. AND l_shipmode IN ('AIR', 'AIR REG')
  607. AND l_shipinstruct = 'DELIVER IN PERSON'
  608. )
  609. or
  610. (
  611. p_partkey = l_partkey
  612. AND p_brand = 'Brand#23'
  613. AND p_container IN ('MED BAG', 'MED BOX', 'MED PKG', 'MED PACK')
  614. AND l_quantity >= CAST (10 AS smallint) AND l_quantity <= CAST (10 + 10 AS smallint)
  615. AND p_size BETWEEN CAST (1 AS smallint) AND CAST (10 AS smallint)
  616. AND l_shipmode IN ('AIR', 'AIR REG')
  617. AND l_shipinstruct = 'DELIVER IN PERSON'
  618. )
  619. or
  620. (
  621. p_partkey = l_partkey
  622. AND p_brand = 'Brand#34'
  623. AND p_container IN ('LG CASE', 'LG BOX', 'LG PACK', 'LG PKG')
  624. AND l_quantity >= CAST (20 AS smallint) AND l_quantity <= CAST (20 + 10 AS smallint)
  625. AND p_size BETWEEN CAST (1 AS smallint) AND CAST (15 AS smallint)
  626. AND l_shipmode IN ('AIR', 'AIR REG')
  627. AND l_shipinstruct = 'DELIVER IN PERSON'
  628. );
  629. 1 values hashing to 7df1074bd6f415369eb335bff3ad1781
  630. # Query 20
  631. > SELECT
  632. s_name,
  633. s_address
  634. FROM
  635. supplier,
  636. nation
  637. WHERE
  638. s_suppkey IN (
  639. SELECT
  640. ps_suppkey
  641. FROM
  642. partsupp
  643. WHERE
  644. ps_partkey IN (
  645. SELECT
  646. p_partkey
  647. FROM
  648. part
  649. WHERE
  650. p_name like 'forest%'
  651. )
  652. AND ps_availqty > (
  653. SELECT
  654. 0.5 * sum(l_quantity)
  655. FROM
  656. lineitem
  657. WHERE
  658. l_partkey = ps_partkey
  659. AND l_suppkey = ps_suppkey
  660. AND l_shipdate >= DATE '1995-01-01'
  661. AND l_shipdate < DATE '1995-01-01' + INTERVAL '1' year
  662. )
  663. )
  664. AND s_nationkey = n_nationkey
  665. AND n_name = 'CANADA'
  666. ORDER BY
  667. s_name;
  668. 2 values hashing to d093f99c74b217399be0eccc998662af
  669. # Query 21
  670. > SELECT
  671. s_name,
  672. count(*) AS numwait
  673. FROM
  674. supplier,
  675. lineitem l1,
  676. orders,
  677. nation
  678. WHERE
  679. s_suppkey = l1.l_suppkey
  680. AND o_orderkey = l1.l_orderkey
  681. AND o_orderstatus = 'F'
  682. AND l1.l_receiptdate > l1.l_commitdate
  683. AND EXISTS (
  684. SELECT
  685. *
  686. FROM
  687. lineitem l2
  688. WHERE
  689. l2.l_orderkey = l1.l_orderkey
  690. AND l2.l_suppkey <> l1.l_suppkey
  691. )
  692. AND not EXISTS (
  693. SELECT
  694. *
  695. FROM
  696. lineitem l3
  697. WHERE
  698. l3.l_orderkey = l1.l_orderkey
  699. AND l3.l_suppkey <> l1.l_suppkey
  700. AND l3.l_receiptdate > l3.l_commitdate
  701. )
  702. AND s_nationkey = n_nationkey
  703. AND n_name = 'SAUDI ARABIA'
  704. GROUP BY
  705. s_name
  706. ORDER BY
  707. numwait DESC,
  708. s_name;
  709. 2 values hashing to fd48e843525a4c80b8fe0b7064b35254
  710. # Query 22
  711. > SELECT
  712. cntrycode,
  713. count(*) AS numcust,
  714. sum(c_acctbal) AS totacctbal
  715. FROM
  716. (
  717. SELECT
  718. substring(c_phone, 1, 2) AS cntrycode, c_acctbal
  719. FROM
  720. customer
  721. WHERE
  722. substring(c_phone, 1, 2)
  723. IN ('13', '31', '23', '29', '30', '18', '17')
  724. AND c_acctbal
  725. > (
  726. SELECT
  727. avg(c_acctbal)
  728. FROM
  729. customer
  730. WHERE
  731. c_acctbal > 0.00
  732. AND substring(c_phone, 1, 2)
  733. IN (
  734. '13',
  735. '31',
  736. '23',
  737. '29',
  738. '30',
  739. '18',
  740. '17'
  741. )
  742. )
  743. AND NOT
  744. EXISTS(
  745. SELECT
  746. *
  747. FROM
  748. orders
  749. WHERE
  750. o_custkey = c_custkey
  751. )
  752. )
  753. AS custsale
  754. GROUP BY
  755. cntrycode
  756. ORDER BY
  757. cntrycode;
  758. 7 values hashing to 3782c67124c71b5bcb3460934dec46de
  759. ################################################
  760. # With indexes
  761. ################################################
  762. > CREATE INDEX pk_nation_nationkey ON nation (n_nationkey ASC)
  763. > CREATE INDEX fk_nation_regionkey ON nation (n_regionkey ASC)
  764. > CREATE INDEX pk_region_regionkey ON region (r_regionkey ASC)
  765. > CREATE INDEX pk_part_partkey ON part (p_partkey ASC)
  766. > CREATE INDEX pk_supplier_suppkey ON supplier (s_suppkey ASC)
  767. > CREATE INDEX fk_supplier_nationkey ON supplier (s_nationkey ASC)
  768. > CREATE INDEX pk_partsupp_partkey_suppkey ON partsupp (ps_partkey ASC, ps_suppkey ASC)
  769. > CREATE INDEX fk_partsupp_partkey ON partsupp (ps_partkey ASC)
  770. > CREATE INDEX fk_partsupp_suppkey ON partsupp (ps_suppkey ASC)
  771. > CREATE INDEX pk_customer_custkey ON customer (c_custkey ASC)
  772. > CREATE INDEX fk_customer_nationkey ON customer (c_nationkey ASC)
  773. > CREATE INDEX pk_orders_orderkey ON orders (o_orderkey ASC)
  774. > CREATE INDEX fk_orders_custkey ON orders (o_custkey ASC)
  775. > CREATE INDEX pk_lineitem_orderkey_linenumber ON lineitem (l_orderkey ASC, l_linenumber ASC)
  776. > CREATE INDEX fk_lineitem_orderkey ON lineitem (l_orderkey ASC)
  777. > CREATE INDEX fk_lineitem_partkey ON lineitem (l_partkey ASC)
  778. > CREATE INDEX fk_lineitem_suppkey ON lineitem (l_suppkey ASC)
  779. > CREATE INDEX fk_lineitem_partsuppkey ON lineitem (l_partkey ASC, l_suppkey ASC)
  780. # Query 01
  781. > SELECT
  782. l_returnflag,
  783. l_linestatus,
  784. sum(l_quantity) AS sum_qty,
  785. sum(l_extendedprice) AS sum_base_price,
  786. sum(l_extendedprice * (1 - l_discount)) AS sum_disc_price,
  787. sum(l_extendedprice * (1 - l_discount) * (1 + l_tax)) AS sum_charge,
  788. avg(l_quantity) AS avg_qty,
  789. avg(l_extendedprice) AS avg_price,
  790. avg(l_discount) AS avg_disc,
  791. count(*) AS count_order
  792. FROM
  793. lineitem
  794. WHERE
  795. l_shipdate <= DATE '1998-12-01' - INTERVAL '60' day
  796. GROUP BY
  797. l_returnflag,
  798. l_linestatus
  799. ORDER BY
  800. l_returnflag,
  801. l_linestatus;
  802. 4 values hashing to 87d2cbecfc8cdcd9c9614dfb7e6d236f
  803. # Query 02
  804. > SELECT
  805. s_acctbal,
  806. s_name,
  807. n_name,
  808. p_partkey,
  809. p_mfgr,
  810. s_address,
  811. s_phone,
  812. s_comment
  813. FROM
  814. part, supplier, partsupp, nation, region
  815. WHERE
  816. p_partkey = ps_partkey
  817. AND s_suppkey = ps_suppkey
  818. AND p_size = CAST (15 AS smallint)
  819. AND p_type LIKE '%BRASS'
  820. AND s_nationkey = n_nationkey
  821. AND n_regionkey = r_regionkey
  822. AND r_name = 'EUROPE'
  823. AND ps_supplycost
  824. = (
  825. SELECT
  826. min(ps_supplycost)
  827. FROM
  828. partsupp, supplier, nation, region
  829. WHERE
  830. p_partkey = ps_partkey
  831. AND s_suppkey = ps_suppkey
  832. AND s_nationkey = n_nationkey
  833. AND n_regionkey = r_regionkey
  834. AND r_name = 'EUROPE'
  835. )
  836. ORDER BY
  837. s_acctbal DESC, n_name, s_name, p_partkey;
  838. 5 values hashing to 746698506bf99abc24b74f03ffb7375a
  839. # Query 03
  840. > SELECT
  841. l_orderkey,
  842. sum(l_extendedprice * (1 - l_discount)) AS revenue,
  843. o_orderdate,
  844. o_shippriority
  845. FROM
  846. customer,
  847. orders,
  848. lineitem
  849. WHERE
  850. c_mktsegment = 'BUILDING'
  851. AND c_custkey = o_custkey
  852. AND l_orderkey = o_orderkey
  853. AND o_orderdate < DATE '1995-03-15'
  854. AND l_shipdate > DATE '1995-03-15'
  855. GROUP BY
  856. l_orderkey,
  857. o_orderdate,
  858. o_shippriority
  859. ORDER BY
  860. revenue DESC,
  861. o_orderdate;
  862. 127 values hashing to 637be0ff3f50cd612b004a69958bfccb
  863. # Query 04
  864. > SELECT
  865. o_orderpriority,
  866. count(*) AS order_count
  867. FROM
  868. orders
  869. WHERE
  870. o_orderdate >= DATE '1993-07-01'
  871. AND o_orderdate < DATE '1993-07-01' + INTERVAL '3' month
  872. AND EXISTS (
  873. SELECT
  874. *
  875. FROM
  876. lineitem
  877. WHERE
  878. l_orderkey = o_orderkey
  879. AND l_commitdate < l_receiptdate
  880. )
  881. GROUP BY
  882. o_orderpriority
  883. ORDER BY
  884. o_orderpriority;
  885. 4 values hashing to 320decef503bc240bc73101fc659a1db
  886. # Query 05
  887. > SELECT
  888. n_name,
  889. sum(l_extendedprice * (1 - l_discount)) AS revenue
  890. FROM
  891. customer,
  892. orders,
  893. lineitem,
  894. supplier,
  895. nation,
  896. region
  897. WHERE
  898. c_custkey = o_custkey
  899. AND l_orderkey = o_orderkey
  900. AND l_suppkey = s_suppkey
  901. AND c_nationkey = s_nationkey
  902. AND s_nationkey = n_nationkey
  903. AND n_regionkey = r_regionkey
  904. AND r_name = 'ASIA'
  905. AND o_orderdate >= DATE '1994-01-01'
  906. AND o_orderdate < DATE '1995-01-01'
  907. GROUP BY
  908. n_name
  909. ORDER BY
  910. revenue DESC;
  911. 5 values hashing to 8e24fa90f7160fb0dc1e7bfaaa3e9c73
  912. # Query 06
  913. > SELECT
  914. sum(l_extendedprice * l_discount) AS revenue
  915. FROM
  916. lineitem
  917. WHERE
  918. l_quantity < 24
  919. AND l_shipdate >= DATE '1994-01-01'
  920. AND l_shipdate < DATE '1994-01-01' + INTERVAL '1' year
  921. AND l_discount BETWEEN 0.06 - 0.01 AND 0.07;
  922. 1 values hashing to d9c979f1eed5940788ff3653321acac4
  923. # Query 07
  924. > SELECT
  925. supp_nation,
  926. cust_nation,
  927. l_year,
  928. sum(volume) AS revenue
  929. FROM
  930. (
  931. SELECT
  932. n1.n_name AS supp_nation,
  933. n2.n_name AS cust_nation,
  934. extract(year FROM l_shipdate) AS l_year,
  935. l_extendedprice * (1 - l_discount) AS volume
  936. FROM
  937. supplier,
  938. lineitem,
  939. orders,
  940. customer,
  941. nation n1,
  942. nation n2
  943. WHERE
  944. s_suppkey = l_suppkey
  945. AND o_orderkey = l_orderkey
  946. AND c_custkey = o_custkey
  947. AND s_nationkey = n1.n_nationkey
  948. AND c_nationkey = n2.n_nationkey
  949. AND (
  950. (n1.n_name = 'FRANCE' AND n2.n_name = 'GERMANY')
  951. or (n1.n_name = 'GERMANY' AND n2.n_name = 'FRANCE')
  952. )
  953. AND l_shipdate BETWEEN DATE '1995-01-01' AND DATE '1996-12-31'
  954. ) AS shipping
  955. GROUP BY
  956. supp_nation,
  957. cust_nation,
  958. l_year
  959. ORDER BY
  960. supp_nation,
  961. cust_nation,
  962. l_year;
  963. 4 values hashing to 0ab7e162c0d17f7fbdebbcb6e6eb4e7f
  964. # Query 08
  965. > SELECT
  966. o_year,
  967. sum(case
  968. when nation = 'BRAZIL' then volume
  969. else 0
  970. end) / sum(volume) AS mkt_share
  971. FROM
  972. (
  973. SELECT
  974. extract(year FROM o_orderdate) AS o_year,
  975. l_extendedprice * (1 - l_discount) AS volume,
  976. n2.n_name AS nation
  977. FROM
  978. part,
  979. supplier,
  980. lineitem,
  981. orders,
  982. customer,
  983. nation n1,
  984. nation n2,
  985. region
  986. WHERE
  987. p_partkey = l_partkey
  988. AND s_suppkey = l_suppkey
  989. AND l_orderkey = o_orderkey
  990. AND o_custkey = c_custkey
  991. AND c_nationkey = n1.n_nationkey
  992. AND n1.n_regionkey = r_regionkey
  993. AND r_name = 'AMERICA'
  994. AND s_nationkey = n2.n_nationkey
  995. AND o_orderdate BETWEEN DATE '1995-01-01' AND DATE '1996-12-31'
  996. AND p_type = 'ECONOMY ANODIZED STEEL'
  997. ) AS all_nations
  998. GROUP BY
  999. o_year
  1000. ORDER BY
  1001. o_year;
  1002. 2 values hashing to dbf3e9692c45719c7b16f17cbb102e8a
  1003. # Query 09
  1004. > SELECT
  1005. nation,
  1006. o_year,
  1007. sum(amount) AS sum_profit
  1008. FROM
  1009. (
  1010. SELECT
  1011. n_name AS nation,
  1012. extract(year FROM o_orderdate) AS o_year,
  1013. l_extendedprice * (1 - l_discount) - ps_supplycost * l_quantity AS amount
  1014. FROM
  1015. part,
  1016. supplier,
  1017. lineitem,
  1018. partsupp,
  1019. orders,
  1020. nation
  1021. WHERE
  1022. s_suppkey = l_suppkey
  1023. AND ps_suppkey = l_suppkey
  1024. AND ps_partkey = l_partkey
  1025. AND p_partkey = l_partkey
  1026. AND o_orderkey = l_orderkey
  1027. AND s_nationkey = n_nationkey
  1028. AND p_name like '%green%'
  1029. ) AS profit
  1030. GROUP BY
  1031. nation,
  1032. o_year
  1033. ORDER BY
  1034. nation,
  1035. o_year DESC;
  1036. 172 values hashing to b0fbcce5ec14e4786bb47cc6a365d7e3
  1037. # Query 10
  1038. > SELECT
  1039. c_custkey,
  1040. c_name,
  1041. sum(l_extendedprice * (1 - l_discount)) AS revenue,
  1042. c_acctbal,
  1043. n_name,
  1044. c_address,
  1045. c_phone,
  1046. c_comment
  1047. FROM
  1048. customer,
  1049. orders,
  1050. lineitem,
  1051. nation
  1052. WHERE
  1053. c_custkey = o_custkey
  1054. AND l_orderkey = o_orderkey
  1055. AND o_orderdate >= DATE '1993-10-01'
  1056. AND o_orderdate < DATE '1994-01-01'
  1057. AND o_orderdate < DATE '1993-10-01' + INTERVAL '3' month
  1058. AND l_returnflag = 'R'
  1059. AND c_nationkey = n_nationkey
  1060. GROUP BY
  1061. c_custkey,
  1062. c_name,
  1063. c_acctbal,
  1064. c_phone,
  1065. n_name,
  1066. c_address,
  1067. c_comment
  1068. ORDER BY
  1069. revenue DESC;
  1070. 366 values hashing to 23dd20e994576aec9e5898b128a6b5a5
  1071. # Query 11
  1072. > SELECT
  1073. ps_partkey,
  1074. sum(ps_supplycost * ps_availqty) AS value
  1075. FROM
  1076. partsupp,
  1077. supplier,
  1078. nation
  1079. WHERE
  1080. ps_suppkey = s_suppkey
  1081. AND s_nationkey = n_nationkey
  1082. AND n_name = 'GERMANY'
  1083. GROUP BY
  1084. ps_partkey having
  1085. sum(ps_supplycost * ps_availqty) > (
  1086. SELECT
  1087. sum(ps_supplycost * ps_availqty) * 0.0001
  1088. FROM
  1089. partsupp,
  1090. supplier,
  1091. nation
  1092. WHERE
  1093. ps_suppkey = s_suppkey
  1094. AND s_nationkey = n_nationkey
  1095. AND n_name = 'GERMANY'
  1096. )
  1097. ORDER BY
  1098. value DESC;
  1099. 103 values hashing to 2a4b6afc2de49adfe1cf81446d355cb1
  1100. # Query 12
  1101. > SELECT
  1102. l_shipmode,
  1103. sum(case
  1104. when o_orderpriority = '1-URGENT'
  1105. or o_orderpriority = '2-HIGH'
  1106. then 1
  1107. else 0
  1108. end) AS high_line_count,
  1109. sum(case
  1110. when o_orderpriority <> '1-URGENT'
  1111. AND o_orderpriority <> '2-HIGH'
  1112. then 1
  1113. else 0
  1114. end) AS low_line_count
  1115. FROM
  1116. orders,
  1117. lineitem
  1118. WHERE
  1119. o_orderkey = l_orderkey
  1120. AND l_shipmode IN ('MAIL', 'SHIP')
  1121. AND l_commitdate < l_receiptdate
  1122. AND l_shipdate < l_commitdate
  1123. AND l_receiptdate >= DATE '1994-01-01'
  1124. AND l_receiptdate < DATE '1994-01-01' + INTERVAL '1' year
  1125. GROUP BY
  1126. l_shipmode
  1127. ORDER BY
  1128. l_shipmode;
  1129. 2 values hashing to 3c31b94c99bd77e96003c2059416ed7a
  1130. # Query 13
  1131. > SELECT
  1132. c_count,
  1133. count(*) AS custdist
  1134. FROM
  1135. (
  1136. SELECT
  1137. c_custkey,
  1138. count(o_orderkey) c_count
  1139. FROM
  1140. customer LEFT OUTER JOIN orders ON
  1141. c_custkey = o_custkey
  1142. AND o_comment NOT LIKE '%special%requests%'
  1143. GROUP BY
  1144. c_custkey
  1145. ) AS c_orders
  1146. GROUP BY
  1147. c_count
  1148. ORDER BY
  1149. custdist DESC,
  1150. c_count DESC;
  1151. 24 values hashing to 0425a49d65f09ba044a8ae4e34fe2fef
  1152. # Query 14
  1153. > SELECT
  1154. 100.00 * sum(case
  1155. when p_type like 'PROMO%'
  1156. then l_extendedprice * (1 - l_discount)
  1157. else 0
  1158. end) / sum(l_extendedprice * (1 - l_discount)) AS promo_revenue
  1159. FROM
  1160. lineitem,
  1161. part
  1162. WHERE
  1163. l_partkey = p_partkey
  1164. AND l_shipdate >= DATE '1995-09-01'
  1165. AND l_shipdate < DATE '1995-09-01' + INTERVAL '1' month;
  1166. 1 values hashing to 52009b01ec2cea22a360dbb1de1e5acf
  1167. # Query 15
  1168. > SELECT
  1169. s_suppkey,
  1170. s_name,
  1171. s_address,
  1172. s_phone,
  1173. total_revenue
  1174. FROM
  1175. supplier,
  1176. revenue
  1177. WHERE
  1178. s_suppkey = supplier_no
  1179. AND total_revenue = (
  1180. SELECT
  1181. max(total_revenue)
  1182. FROM
  1183. revenue
  1184. )
  1185. ORDER BY
  1186. s_suppkey;
  1187. 1 values hashing to cef6c8859cb05a1680529bf4b688bbdb
  1188. # Query 16
  1189. > SELECT
  1190. p_brand,
  1191. p_type,
  1192. p_size,
  1193. count(DISTINCT ps_suppkey) AS supplier_cnt
  1194. FROM
  1195. partsupp,
  1196. part
  1197. WHERE
  1198. p_partkey = ps_partkey
  1199. AND p_brand <> 'Brand#45'
  1200. AND p_type NOT LIKE 'MEDIUM POLISHED%'
  1201. AND p_size IN (49, 14, 23, 45, 19, 3, 36, 9)
  1202. AND ps_suppkey NOT IN (
  1203. SELECT
  1204. s_suppkey
  1205. FROM
  1206. supplier
  1207. WHERE
  1208. s_comment like '%Customer%Complaints%'
  1209. )
  1210. GROUP BY
  1211. p_brand,
  1212. p_type,
  1213. p_size
  1214. ORDER BY
  1215. supplier_cnt DESC,
  1216. p_brand,
  1217. p_type,
  1218. p_size;
  1219. 309 values hashing to c4a6eb0207205cae9790096e7e4381d7
  1220. # Query 17
  1221. > SELECT
  1222. sum(l_extendedprice) / 7.0 AS avg_yearly
  1223. FROM
  1224. lineitem,
  1225. part
  1226. WHERE
  1227. p_partkey = l_partkey
  1228. AND p_brand = 'Brand#23'
  1229. AND p_container = 'MED BOX'
  1230. AND l_quantity < (
  1231. SELECT
  1232. 0.2 * avg(l_quantity)
  1233. FROM
  1234. lineitem
  1235. WHERE
  1236. l_partkey = p_partkey
  1237. );
  1238. 1 values hashing to 6ea48615d6dd1ff31045cd67a15ef60a
  1239. # Query 18
  1240. > SELECT
  1241. c_name,
  1242. c_custkey,
  1243. o_orderkey,
  1244. o_orderdate,
  1245. o_totalprice,
  1246. sum(l_quantity)
  1247. FROM
  1248. customer,
  1249. orders,
  1250. lineitem
  1251. WHERE
  1252. o_orderkey IN (
  1253. SELECT
  1254. l_orderkey
  1255. FROM
  1256. lineitem
  1257. GROUP BY
  1258. l_orderkey having
  1259. sum(l_quantity) > 300
  1260. )
  1261. AND c_custkey = o_custkey
  1262. AND o_orderkey = l_orderkey
  1263. GROUP BY
  1264. c_name,
  1265. c_custkey,
  1266. o_orderkey,
  1267. o_orderdate,
  1268. o_totalprice
  1269. ORDER BY
  1270. o_totalprice DESC,
  1271. o_orderdate;
  1272. 3 values hashing to 321256b5aef1aedab78f125c5925de92
  1273. # Query 19
  1274. > SELECT
  1275. sum(l_extendedprice* (1 - l_discount)) AS revenue
  1276. FROM
  1277. lineitem,
  1278. part
  1279. WHERE
  1280. (
  1281. p_partkey = l_partkey
  1282. AND p_brand = 'Brand#12'
  1283. AND p_container IN ('SM CASE', 'SM BOX', 'SM PACK', 'SM PKG')
  1284. AND l_quantity >= CAST (1 AS smallint) AND l_quantity <= CAST (1 + 10 AS smallint)
  1285. AND p_size BETWEEN CAST (1 AS smallint) AND CAST (5 AS smallint)
  1286. AND l_shipmode IN ('AIR', 'AIR REG')
  1287. AND l_shipinstruct = 'DELIVER IN PERSON'
  1288. )
  1289. or
  1290. (
  1291. p_partkey = l_partkey
  1292. AND p_brand = 'Brand#23'
  1293. AND p_container IN ('MED BAG', 'MED BOX', 'MED PKG', 'MED PACK')
  1294. AND l_quantity >= CAST (10 AS smallint) AND l_quantity <= CAST (10 + 10 AS smallint)
  1295. AND p_size BETWEEN CAST (1 AS smallint) AND CAST (10 AS smallint)
  1296. AND l_shipmode IN ('AIR', 'AIR REG')
  1297. AND l_shipinstruct = 'DELIVER IN PERSON'
  1298. )
  1299. or
  1300. (
  1301. p_partkey = l_partkey
  1302. AND p_brand = 'Brand#34'
  1303. AND p_container IN ('LG CASE', 'LG BOX', 'LG PACK', 'LG PKG')
  1304. AND l_quantity >= CAST (20 AS smallint) AND l_quantity <= CAST (20 + 10 AS smallint)
  1305. AND p_size BETWEEN CAST (1 AS smallint) AND CAST (15 AS smallint)
  1306. AND l_shipmode IN ('AIR', 'AIR REG')
  1307. AND l_shipinstruct = 'DELIVER IN PERSON'
  1308. );
  1309. 1 values hashing to 7df1074bd6f415369eb335bff3ad1781
  1310. # Query 20
  1311. > SELECT
  1312. s_name,
  1313. s_address
  1314. FROM
  1315. supplier,
  1316. nation
  1317. WHERE
  1318. s_suppkey IN (
  1319. SELECT
  1320. ps_suppkey
  1321. FROM
  1322. partsupp
  1323. WHERE
  1324. ps_partkey IN (
  1325. SELECT
  1326. p_partkey
  1327. FROM
  1328. part
  1329. WHERE
  1330. p_name like 'forest%'
  1331. )
  1332. AND ps_availqty > (
  1333. SELECT
  1334. 0.5 * sum(l_quantity)
  1335. FROM
  1336. lineitem
  1337. WHERE
  1338. l_partkey = ps_partkey
  1339. AND l_suppkey = ps_suppkey
  1340. AND l_shipdate >= DATE '1995-01-01'
  1341. AND l_shipdate < DATE '1995-01-01' + INTERVAL '1' year
  1342. )
  1343. )
  1344. AND s_nationkey = n_nationkey
  1345. AND n_name = 'CANADA'
  1346. ORDER BY
  1347. s_name;
  1348. 2 values hashing to d093f99c74b217399be0eccc998662af
  1349. # Query 21
  1350. > SELECT
  1351. s_name,
  1352. count(*) AS numwait
  1353. FROM
  1354. supplier,
  1355. lineitem l1,
  1356. orders,
  1357. nation
  1358. WHERE
  1359. s_suppkey = l1.l_suppkey
  1360. AND o_orderkey = l1.l_orderkey
  1361. AND o_orderstatus = 'F'
  1362. AND l1.l_receiptdate > l1.l_commitdate
  1363. AND EXISTS (
  1364. SELECT
  1365. *
  1366. FROM
  1367. lineitem l2
  1368. WHERE
  1369. l2.l_orderkey = l1.l_orderkey
  1370. AND l2.l_suppkey <> l1.l_suppkey
  1371. )
  1372. AND not EXISTS (
  1373. SELECT
  1374. *
  1375. FROM
  1376. lineitem l3
  1377. WHERE
  1378. l3.l_orderkey = l1.l_orderkey
  1379. AND l3.l_suppkey <> l1.l_suppkey
  1380. AND l3.l_receiptdate > l3.l_commitdate
  1381. )
  1382. AND s_nationkey = n_nationkey
  1383. AND n_name = 'SAUDI ARABIA'
  1384. GROUP BY
  1385. s_name
  1386. ORDER BY
  1387. numwait DESC,
  1388. s_name;
  1389. 2 values hashing to fd48e843525a4c80b8fe0b7064b35254
  1390. # Query 22
  1391. > SELECT
  1392. cntrycode,
  1393. count(*) AS numcust,
  1394. sum(c_acctbal) AS totacctbal
  1395. FROM
  1396. (
  1397. SELECT
  1398. substring(c_phone, 1, 2) AS cntrycode, c_acctbal
  1399. FROM
  1400. customer
  1401. WHERE
  1402. substring(c_phone, 1, 2)
  1403. IN ('13', '31', '23', '29', '30', '18', '17')
  1404. AND c_acctbal
  1405. > (
  1406. SELECT
  1407. avg(c_acctbal)
  1408. FROM
  1409. customer
  1410. WHERE
  1411. c_acctbal > 0.00
  1412. AND substring(c_phone, 1, 2)
  1413. IN (
  1414. '13',
  1415. '31',
  1416. '23',
  1417. '29',
  1418. '30',
  1419. '18',
  1420. '17'
  1421. )
  1422. )
  1423. AND NOT
  1424. EXISTS(
  1425. SELECT
  1426. *
  1427. FROM
  1428. orders
  1429. WHERE
  1430. o_custkey = c_custkey
  1431. )
  1432. )
  1433. AS custsale
  1434. GROUP BY
  1435. cntrycode
  1436. ORDER BY
  1437. cntrycode;
  1438. 7 values hashing to 3782c67124c71b5bcb3460934dec46de
  1439. > DROP SOURCE gen CASCADE