tpch.sql 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  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. -- Table definitions for the schema of the `TPCH` benchmarking scenario.
  10. CREATE TABLE nation (
  11. n_nationkey integer ,
  12. n_name char(25) NOT NULL,
  13. n_regionkey integer NOT NULL,
  14. n_comment varchar(152)
  15. );
  16. CREATE INDEX pk_nation_nationkey ON nation (n_nationkey ASC);
  17. CREATE INDEX fk_nation_regionkey ON nation (n_regionkey ASC);
  18. CREATE TABLE region (
  19. r_regionkey integer ,
  20. r_name char(25) NOT NULL,
  21. r_comment varchar(152)
  22. );
  23. CREATE INDEX pk_region_regionkey ON region (r_regionkey ASC);
  24. CREATE TABLE part (
  25. p_partkey integer ,
  26. p_name varchar(55) NOT NULL,
  27. p_mfgr char(25) NOT NULL,
  28. p_brand char(10) NOT NULL,
  29. p_type varchar(25) NOT NULL,
  30. p_size integer NOT NULL,
  31. p_container char(10) NOT NULL,
  32. p_retailprice decimal(15, 2) NOT NULL,
  33. p_comment varchar(23) NOT NULL
  34. );
  35. CREATE INDEX pk_part_partkey ON part (p_partkey ASC);
  36. CREATE TABLE supplier (
  37. s_suppkey integer ,
  38. s_name char(25) NOT NULL,
  39. s_address varchar(40) NOT NULL,
  40. s_nationkey integer NOT NULL,
  41. s_phone char(15) NOT NULL,
  42. s_acctbal decimal(15, 2) NOT NULL,
  43. s_comment varchar(101) NOT NULL
  44. );
  45. CREATE INDEX pk_supplier_suppkey ON supplier (s_suppkey ASC);
  46. CREATE INDEX fk_supplier_nationkey ON supplier (s_nationkey ASC);
  47. CREATE TABLE partsupp (
  48. ps_partkey integer NOT NULL,
  49. ps_suppkey integer NOT NULL,
  50. ps_availqty integer NOT NULL,
  51. ps_supplycost decimal(15, 2) NOT NULL,
  52. ps_comment varchar(199) NOT NULL
  53. );
  54. CREATE INDEX pk_partsupp_partkey_suppkey ON partsupp (ps_partkey ASC, ps_suppkey ASC);
  55. CREATE INDEX fk_partsupp_partkey ON partsupp (ps_partkey ASC);
  56. CREATE INDEX fk_partsupp_suppkey ON partsupp (ps_suppkey ASC);
  57. CREATE TABLE customer (
  58. c_custkey integer ,
  59. c_name varchar(25) NOT NULL,
  60. c_address varchar(40) NOT NULL,
  61. c_nationkey integer NOT NULL,
  62. c_phone char(15) NOT NULL,
  63. c_acctbal decimal(15, 2) NOT NULL,
  64. c_mktsegment char(10) NOT NULL,
  65. c_comment varchar(117) NOT NULL
  66. );
  67. CREATE INDEX pk_customer_custkey ON customer (c_custkey ASC);
  68. CREATE INDEX fk_customer_nationkey ON customer (c_nationkey ASC);
  69. CREATE TABLE orders (
  70. o_orderkey integer ,
  71. o_custkey integer NOT NULL,
  72. o_orderstatus char(1) NOT NULL,
  73. o_totalprice decimal(15, 2) NOT NULL,
  74. o_orderdate DATE NOT NULL,
  75. o_orderpriority char(15) NOT NULL,
  76. o_clerk char(15) NOT NULL,
  77. o_shippriority integer NOT NULL,
  78. o_comment varchar(79) NOT NULL
  79. );
  80. CREATE INDEX pk_orders_orderkey ON orders (o_orderkey ASC);
  81. CREATE INDEX fk_orders_custkey ON orders (o_custkey ASC);
  82. CREATE TABLE lineitem (
  83. l_orderkey integer NOT NULL,
  84. l_partkey integer NOT NULL,
  85. l_suppkey integer NOT NULL,
  86. l_linenumber integer NOT NULL,
  87. l_quantity decimal(15, 2) NOT NULL,
  88. l_extendedprice decimal(15, 2) NOT NULL,
  89. l_discount decimal(15, 2) NOT NULL,
  90. l_tax decimal(15, 2) NOT NULL,
  91. l_returnflag char(1) NOT NULL,
  92. l_linestatus char(1) NOT NULL,
  93. l_shipdate date NOT NULL,
  94. l_commitdate date NOT NULL,
  95. l_receiptdate date NOT NULL,
  96. l_shipinstruct char(25) NOT NULL,
  97. l_shipmode char(10) NOT NULL,
  98. l_comment varchar(44) NOT NULL
  99. );
  100. CREATE INDEX pk_lineitem_orderkey_linenumber ON lineitem (l_orderkey ASC, l_linenumber ASC);
  101. CREATE INDEX fk_lineitem_orderkey ON lineitem (l_orderkey ASC);
  102. CREATE INDEX fk_lineitem_partkey ON lineitem (l_partkey ASC);
  103. CREATE INDEX fk_lineitem_suppkey ON lineitem (l_suppkey ASC);
  104. CREATE INDEX fk_lineitem_partsuppkey ON lineitem (l_partkey ASC, l_suppkey ASC);
  105. CREATE VIEW revenue (supplier_no, total_revenue) AS
  106. SELECT
  107. l_suppkey,
  108. sum(l_extendedprice * (1 - l_discount))
  109. FROM
  110. lineitem
  111. WHERE
  112. l_shipdate >= DATE '1996-01-01'
  113. AND l_shipdate < DATE '1996-01-01' + INTERVAL '3' month
  114. GROUP BY
  115. l_suppkey;