The Database Doctor
Musing about Databases

TPC series - TPC-H Query 8, 10 and 12 - Join order Training

Query 8

SELECT o_year,
       SUM(CASE
           WHEN nation = 'GERMANY'
               THEN volume
           ELSE 0
           END) / SUM(volume) AS mkt_share
FROM (SELECT EXTRACT(YEAR FROM o_orderdate)     AS o_year,
             l_extendedprice * (1 - l_discount) AS volume,
             n2.n_name                          AS nation
      FROM tpch.lineitem
      INNER JOIN tpch.part ON l_partkey = p_partkey
      INNER JOIN tpch.supplier ON l_suppkey = s_suppkey
      INNER JOIN tpch.nation n2 ON n2.n_nationkey = s_nationkey
      INNER JOIN tpch.orders ON l_orderkey = o_orderkey
      INNER JOIN tpch.customer ON o_custkey = c_custkey
      INNER JOIN tpch.nation n1 ON c_nationkey = n1.n_nationkey
      INNER JOIN region ON n1.n_regionkey = r_regionkey
      WHERE r_name = 'EUROPE'
        AND o_orderdate BETWEEN DATE '1995-01-01' AND DATE '1996-12-31'
        AND p_type = 'MEDIUM PLATED BRASS') AS all_nations
GROUP BY o_year
ORDER BY o_year;

Query 10

SELECT c_custkey,
       c_name,
       SUM(l_extendedprice * (1 - l_discount)) AS revenue,
       c_acctbal,
       n_name,
       c_address,
       c_phone,
       c_comment
FROM tpch.lineitem
INNER JOIN tpch.orders ON l_orderkey = o_orderkey
INNER JOIN tpch.customer ON o_custkey = c_custkey
INNER JOIN tpch.nation ON c_nationkey = n_nationkey
WHERE o_orderdate >= '1994-03-01'
  AND o_orderdate < '1994-06-01'
  AND l_returnflag = 'R'
  AND
GROUP BY c_custkey,
         c_name,
         c_acctbal,
         c_phone,
         n_name,
         c_address,
         c_comment
ORDER BY revenue DESC

Query 12

SELECT l_shipmode,
       SUM(CASE
           WHEN o_orderpriority = '1-URGENT'
               OR o_orderpriority = '2-HIGH'
               THEN 1
           ELSE 0
           END) AS high_line_count,
       SUM(CASE
           WHEN o_orderpriority <> '1-URGENT'
               AND o_orderpriority <> '2-HIGH'
               THEN 1
           ELSE 0
           END) AS low_line_count
FROM tpch.lineitem
INNER JOIN tpch.orders ON l_orderkey = o_orderkey
WHERE l_shipmode IN ('AIR', 'TRUCK')
  AND l_commitdate < l_receiptdate
  AND l_shipdate < l_commitdate
  AND l_receiptdate >= '1994-01-01'
  AND l_receiptdate < '1995-01-01'
GROUP BY l_shipmode
ORDER BY l_shipmode;