aboutsummaryrefslogtreecommitdiffstats
path: root/yql/essentials/tests/sql/suites/tpch/q7.sql
blob: 6ff0eec4dbc1f676bce636fbd675eacf4469b9c7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
-- TPC-H/TPC-R Volume Shipping Query (Q7)
-- TPC TPC-H Parameter Substitution (Version 2.17.2 build 0)
-- using 1680793381 as a seed to the RNG

$n = select n_name, n_nationkey from plato.nation as n
    where n_name = 'PERU' or n_name = 'MOZAMBIQUE';

$l = select 
    l_orderkey, l_suppkey,
    DateTime::GetYear(cast(l_shipdate as timestamp)) as l_year,
    l_extendedprice * (1 - l_discount) as volume
from 
    plato.lineitem as l
where 
    cast(cast(l.l_shipdate as Timestamp) as Date) 
    between Date('1995-01-01') and Date('1996-12-31');

$j1 = select 
    n_name as supp_nation,
    s_suppkey
from 
    plato.supplier as supplier
join 
    $n as n1
on 
    supplier.s_nationkey = n1.n_nationkey;

$j2 = select
    n_name as cust_nation,
    c_custkey
from 
    plato.customer as customer
join 
    $n as n2
on 
    customer.c_nationkey = n2.n_nationkey;

$j3 = select
    cust_nation, o_orderkey
from 
    plato.orders as orders
join 
    $j2 as customer
on 
    orders.o_custkey = customer.c_custkey;

$j4 = select
    cust_nation,
    l_orderkey, l_suppkey,
    l_year,
    volume
from 
    $l as lineitem
join 
    $j3 as orders
on 
    lineitem.l_orderkey = orders.o_orderkey;

$j5 = select
    supp_nation, cust_nation,
    l_year, volume
from 
    $j4 as lineitem
join 
    $j1 as supplier
on 
    lineitem.l_suppkey = supplier.s_suppkey
where (supp_nation = 'PERU' and cust_nation = 'MOZAMBIQUE')
    OR (supp_nation = 'MOZAMBIQUE' and cust_nation = 'PERU');

select
    supp_nation,
    cust_nation,
    l_year, 
    sum(volume) as revenue
from
    $j5 as shipping
group by
    supp_nation,
    cust_nation,
    l_year
order by
    supp_nation,
    cust_nation,
    l_year;