q21.sql 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. -- TPC-H/TPC-R Suppliers Who Kept Orders Waiting Query (Q21)
  2. -- TPC TPC-H Parameter Substitution (Version 2.17.2 build 0)
  3. -- using 1680793381 as a seed to the RNG
  4. $n = select n_nationkey from plato.nation
  5. where n_name = 'EGYPT';
  6. $s = select s_name, s_suppkey from plato.supplier as supplier
  7. join $n as nation
  8. on supplier.s_nationkey = nation.n_nationkey;
  9. $l = select l_suppkey, l_orderkey from plato.lineitem
  10. where l_receiptdate > l_commitdate;
  11. $j1 = select s_name, l_suppkey, l_orderkey from $l as l1
  12. join $s as supplier
  13. on l1.l_suppkey = supplier.s_suppkey;
  14. $j1_1 = select l1.l_orderkey as l_orderkey from $j1 as l1
  15. join $l as l3
  16. on l1.l_orderkey = l3.l_orderkey
  17. where l3.l_suppkey <> l1.l_suppkey;
  18. $j2 = select s_name, l_suppkey, l_orderkey from $j1 as l1
  19. left only join $j1_1 as l3
  20. on l1.l_orderkey = l3.l_orderkey;
  21. $j2_1 = select l1.l_orderkey as l_orderkey from $j2 as l1
  22. join plato.lineitem as l2
  23. on l1.l_orderkey = l2.l_orderkey
  24. where l2.l_suppkey <> l1.l_suppkey;
  25. $j3 = select s_name, l1.l_suppkey as l_suppkey, l1.l_orderkey as l_orderkey from $j2 as l1
  26. left semi join $j2_1 as l2
  27. on l1.l_orderkey = l2.l_orderkey;
  28. $j4 = select s_name from $j3 as l1
  29. join plato.orders as orders
  30. on orders.o_orderkey = l1.l_orderkey
  31. where o_orderstatus = 'F';
  32. select s_name,
  33. count(*) as numwait from $j4
  34. group by
  35. s_name
  36. order by
  37. numwait desc,
  38. s_name
  39. limit 100;